PDA

View Full Version : سوال: تشخیص اینکه چندبار روی Hyperlink کلیک شده؟



ASP.NET2
سه شنبه 24 آبان 1390, 18:43 عصر
سلام.
من تو فرمم یک لینک داونلود دارم.می خوام هر بار که یک کاربر روی لینک کلیک کرد یک واحد به counter (دفعات دانلود) اضافه کنم. کسی می دونه به استفاده از HyperLink چجوری باید این کارو انجام بدم.؟؟؟

alibabaei2
سه شنبه 24 آبان 1390, 19:15 عصر
خوب وقتی hyperlink گذاشتید باید کاربر به یک صفحه ای بره دیگه
در pageLoad اون صفحه بنویسید که مقدار counter رو اضافه کنه

ASP.NET2
سه شنبه 24 آبان 1390, 19:25 عصر
خوب وقتی hyperlink گذاشتید باید کاربر به یک صفحه ای بره دیگه
در pageLoad اون صفحه بنویسید که مقدار counter رو اضافه کنه
سلام مرسی از جوابت.
ولی به صفحه ی دیگه ای نمیره مسیر فایل داده میشه یعنی مسیر فایلی که اون مسیر تو database ذخیره شده به NavigateUrl داده میشه .

smm2006sh
سه شنبه 24 آبان 1390, 19:32 عصر
سلام دوست من

فک کنم این به دردت بخوره
http://www.devx.com/asp/article/21975/1954

ASP.NET2
سه شنبه 24 آبان 1390, 19:40 عصر
سلام
مرسی از بابت جواب
ولی مشکل این نیست ، مشکل اینه که فقط می خوام با هر کلیکی که رو HyperLink میشه.بتونم مقداری رو به CodeBehind بفرستم .خودتون که بهتر می دونید HyperLink رویداد OnClick نداره. من با C#‎ کار میکنم.

oossaa
سه شنبه 24 آبان 1390, 19:47 عصر
این کار رو با jquery راحت می تونی انجام بدی البته باید ajax هم کار کنی
اما پیشنهاد من اینه که شما یه صفحه Redirect بسازی لینک هاتو مثله متغییر بفرستی و ابتدا هر کاری می خوای با پایگاه داده ت بکنی بعد redirect کنی به صفحه مورد نظر

ASP.NET2
سه شنبه 24 آبان 1390, 20:03 عصر
سلام مرسی از جوابت
ولی این که شما فرمودی اون چیزی نیست که من دنبالشم.

مهدی کرامتی
سه شنبه 24 آبان 1390, 20:10 عصر
Hyperlink رویداد OnClick نداره، اما شما می توانی در صفحه ای که این Hyperlink به اونجا اشاره می کنه تعداد دفعات باز شده صفحه را در Page_Load بشماری و در جایی ذخیره کنی.

smm2006sh
سه شنبه 24 آبان 1390, 20:12 عصر
شما میخواید وقتی کلیک شد شما رو به code ببره دیگه . من یه کد دارم که از بین کد های html یه تابع رو صدا میزنه و اون تابع اجرا میشه ولی فک نکنم اون به دردت بخوره چون شما میخوید با کلیک مثلا اون تابع اجرا بشه؟؟؟

ASP.NET2
سه شنبه 24 آبان 1390, 20:20 عصر
Hyperlink رویداد OnClick نداره، اما شما می توانی در صفحه ای که این Hyperlink به اونجا اشاره می کنه تعداد دفعات باز شده صفحه را در Page_Load بشماری و در جایی ذخیره کنی.
سلام مرسی از جوابتون آقای کرامتی
فکر میکنم باید یه خورده بیشتر باید توضیح بدم .
HyperLink من داخل یک Repeater هستش که من مقدار NavigateUrl اون رو با Eval bind کردم.


<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("AttachmentUrl") %> '>لینک داونلود</asp:HyperLink>

َAttachmentUrl همون آدرس فایلی هستش که باید داونلود شه. برا مثال
~/Uploads/File.zip

ASP.NET2
سه شنبه 24 آبان 1390, 20:26 عصر
البته شاید این کاری که دارم برا داونلود انجام میدم درست نباشه چون آقای فتح الهی تو وب سایت خودشون از Generic Handler برا این کار استفاده کردن که متسفانه من اطلاعاتی در بارش ندارم . اگه کسی نمونه داره لطف کنه برام بذاره.
وب سایت فتح الهی پایا وب شمال (http://www.payawebshomal.com/ArticleDetails.aspx?ArticleID=30)

oossaa
سه شنبه 24 آبان 1390, 20:29 عصر
دوست عزیز با استفاده از jquery همه ی اجزاء html رویداد onclcik دارن!

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("AttachmentUrl") %> '>لینک داونلود</asp:HyperLink>تبدیلش کن به این خوب

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "Redirect?file=" + Eval("AttachmentUrl") %> '>لینک داونلود</asp:HyperLink>


بعد تو PageLoad صفحه Redirect کاران رو انجام بده

با jquery هم می تونی اینجوری رویدادشو بگیری


<asp:HyperLink ID="HyperLink1" fileDownload="1" runat="server" NavigateUrl='<%# Eval("AttachmentUrl") %> '>لینک داونلود</asp:HyperLink>


$("[fileDownload]").click(function() { ..... });

ASP.NET2
سه شنبه 24 آبان 1390, 20:38 عصر
دوست عزیز با استفاده از jquery همه ی اجزاء html رویداد onclcik دارن!

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("AttachmentUrl") %> '>لینک داونلود</asp:HyperLink>تبدیلش کن به این خوب

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "Redirect?file=" + Eval("AttachmentUrl") %> '>لینک داونلود</asp:HyperLink>



بعد تو PageLoad صفحه Redirect کاران رو انجام بده

با jquery هم می تونی اینجوری رویدادشو بگیری


<asp:HyperLink ID="HyperLink1" fileDownload="1" runat="server" NavigateUrl='<%# Eval("AttachmentUrl") %> '>لینک داونلود</asp:HyperLink>


$("[fileDownload]").click(function() { ..... });

متوجه نشدم . نمونه داری برام بذاری؟

oossaa
سه شنبه 24 آبان 1390, 20:41 عصر
NavigateUrl='<%# "Redirect.aspx?file=" + Eval("AttachmentUrl") %> '

این بخش عوض کن دیگه

بعد تو صفحه Redirect.aspx باید request file رو بگیری و کاراتو بکنی و سر آخر redirect کنی به request file

نمونه کد ندارم الان اما کار سختی نیست در کل

ASP.NET2
سه شنبه 24 آبان 1390, 21:26 عصر
مرسی از همه دوستان از بابت جوابشون. من تصمیم گرفتم برا این کار (Download) و محاسبه ی اینکه چند بار این عمل انجام گرفته از Generic Handler استفاده کنم . اینجوری خیلی بهتره.

maryammb66
پنج شنبه 26 آبان 1390, 09:42 صبح
تونستین جوابی واسش پیدا کنید؟
اگه آره بزارین اینجا منم بتونم استفاده کنم

ASP.NET2
پنج شنبه 26 آبان 1390, 13:06 عصر
تونستین جوابی واسش پیدا کنید؟
اگه آره بزارین اینجا منم بتونم استفاده کنم
بله جوابشو پیدا کردم
اگه اجازه بدین یه مقاله در موردش می نویسم Share میکنم.

maryammb66
پنج شنبه 26 آبان 1390, 14:19 عصر
میبخشید
من تو سایتم یکسری نقشه دارم ، که این نقشه ها رو اگر کاربر اعتبار کافی داشته باشه و عضو سایت باشه می تونه دانلود کنه!
که یه جدول map ایجاد کردم که یکی از فیلدهاش آدرس و قیمت نقشه رو داره !
این اطلاعات رو هم گذاشتم تو یه grid view که هر سطر از grid view اطلاعات یه نقشه رو نشون میده!
وقتی صفحه لود میشه، مثلا اعتبار کاربر 5000 تومان باشه فقط اون نقشه هایی لینکش فعال هست که از اعتبار جاریه کاربر کمتر باشه!
بعد اینکه نقشه رو دانلود کرد می خوام قیمت نقشه از اعتبار کاربر کم بشه! البته اگه دانلود با موفقیت انجام بشه!
و اینکه می خوام بدونم این نقشه چند بار دانلود شده
میشه راهنماییم کنید؟

Himalaya
پنج شنبه 26 آبان 1390, 15:08 عصر
سلام

من تو فرمم یک لینک داونلود دارم.می خوام هر بار که یک کاربر روی لینک کلیک کرد یک واحد به counter (دفعات دانلود) اضافه کنم.
کسی می دونه به استفاده از HyperLink چجوری باید این کارو انجام بدم.؟؟؟
خودتون که بهتر می دونید HyperLink رویداد OnClick ندارهرویداد کلیک رو براش تعریف کن. کدای زیر رو فقط واسه گرفتن ایده تو یه پروژه جدید قرار بده


<div>
<asp:GridView ID="GridView1" runat="server" EnableModelValidation="True"
AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="DownloadLink" runat="server" NavigateUrl="#">HyperLink</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="50px" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Label ID="ClickCount" runat="server" Text="0"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:CheckBoxField DataField="Active" HeaderText="Active" />
</Columns>
</asp:GridView>
</div>


public partial class _Default : System.Web.UI.Page, IPostBackEventHandler
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
FillGrid();

if (GridView1.Rows.Count > 0)
AssignClick();
}

private void FillGrid()
{
var lst = new[]
{
new { Name="Ali",Active=true },
new { Name="Amir",Active=true },
new { Name="Mohamad",Active=true },
new { Name="Majid",Active=true },
new { Name="Mohsen",Active=true },
}.ToList();
GridView1.DataSource = lst;
GridView1.DataBind();
}

private void AssignClick()
{
foreach (GridViewRow row in GridView1.Rows)
{
((HyperLink)row.FindControl("DownloadLink")).Attributes["onclick"] =
Page.ClientScript.GetPostBackEventReference(this, "RowIndex" + row.RowIndex);
}
}

public void RaisePostBackEvent(string eventArgument)
{
if (string.IsNullOrEmpty(eventArgument)) return;
DownloadLink_Click(eventArgument);
}

protected void DownloadLink_Click(string eventArgument)
{
var lbl = (Label)GridView1.Rows[int.Parse(eventArgument.Substring(8, eventArgument.Length - 8))].FindControl("ClickCount");
lbl.Text = (int.Parse(lbl.Text) + 1).ToString();
}
}