PDA

View Full Version : مشکل با link_button



ehsan957
پنج شنبه 16 فروردین 1386, 01:05 صبح
در موقع کامپایل با این خطا مواجه شدم راه حلش را می خوام


Handles clause requires a WithEvents variable defined in the containing type or one of its base types.این خطا به قسمت زیر گرفته می شه



Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
Response.Write("123")
End Sub
من این Link_button را داخل یک Repeater بکار بردم جالب اینه که وقتی در جای دیگه قرارش میدم هیچ مشکلی نداره و کار می کنه

manager
پنج شنبه 16 فروردین 1386, 09:34 صبح
کد Handler شما که مشکلی نداره، قسمت های دیگه رو نمی دونم چون ندیدم. من یه برنامه کوچیک براتون تهیه کردم بلکم مشکلتون حل بشه :



protected void Page_Load(object sender, EventArgs e)
{
SetupRepeater();
}
private DataTable GetData()
{
DataTable dtData = new DataTable();
dtData.Columns.Add(new DataColumn("Title", typeof(string)));
dtData.Columns.Add(new DataColumn("Url", typeof(string)));
for (int i = 0; i < 10; ++i)
{
DataRow row1 = dtData.NewRow();
row1["Title"] = "Link"+i.ToString();
row1["Url"] = "http://www.link"+i.ToString()+".com (http://www.link%22+i.tostring()+%22.com/)";
dtData.Rows.Add(row1);
}
return dtData;
}
private void SetupRepeater()
{
Repeater1.DataSource = GetData();
Repeater1.DataBind();
}
protected void LinkButtonN_OnClick(object sender, EventArgs e)
{
Response.Write(((LinkButton)sender).ClientID + " was clicked. <br/> <br/>");
}



و در قسمت HTML داریم :


<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButtonN_OnClick"><%#Eval("Title") %></asp:LinkButton><br />
</ItemTemplate>
</asp:Repeater>
</div>
</form>

ehsan957
پنج شنبه 16 فروردین 1386, 10:59 صبح
این Link_Button ها مربوط به قسمت Ranking میشه که از شماره 1 تا 4 (4 تا Link Button) من می خوام وقتی روی یکی از این کلید ها کلیک شد به قسمت مربوطه در Repeater یک Rank اختصاص بدهد.
در ضمن داده های داخل Repeater از دیتابیس Access خوانده می شود و همچنین Rank هم بعد از محاسبه داخل همان دیتابیس ذخیره خواهد شد.

manager
پنج شنبه 16 فروردین 1386, 12:26 عصر
خوب مشکلی نداره دوست من، مثال بالا گویای همه چیز هست شما می تونید مقدار Rank رو از طریق Command Argumanet به Event Handlerتون پاس کنید.
حالا مشکلتون حل شد ؟

ehsan957
یک شنبه 19 فروردین 1386, 08:11 صبح
شما می تونید مقدار Rank رو از طریق Command Argumanet به Event Handlerتون پاس کنید.




خوب مشکل اینه که من نمی دونم این کارخ چطور باید انجام بدم :ناراحت: پس اگه میشه این روش را واسم توضیح بدین :چشمک:

amir.NET2
یک شنبه 19 فروردین 1386, 08:37 صبح
Command Argumanet یک Property در Link Button هست که واقعا کار راه بندازه

شما با استفاده از رویداد ItemCommand کنترل Repeater می تونید به اون دسترسی داشته باشید

توضیحات بیشتر رو محمد جون خودت بده من وقت ندارم

ehsan957
یک شنبه 19 فروردین 1386, 09:27 صبح
راستی اون مشکل که برای کلیک بر روی Button بخوایم کد بنویسیم و Error میده چیکار کنم

amir.NET2
یک شنبه 19 فروردین 1386, 09:39 صبح
کدوم مشکل

شما روی Button دابل کلیک کن بعد کدتو بنویس

ehsan957
یک شنبه 19 فروردین 1386, 11:01 صبح
کدوم مشکل

شما روی Button دابل کلیک کن بعد کدتو بنویس

مثل اینه که شما به طور کامل مباحث را پیگیری نکردین

اصل مشکل من هم همینه که وقتی کد را می نویسم بهم مشکل میگیره
به قسمت شروع مباحث یه نگاهی بیندازین

amir.NET2
یک شنبه 19 فروردین 1386, 11:14 صبح
دوست من شما اصلا به LinkButton موجود در Repeater نباید Event بدی

ehsan957
یک شنبه 19 فروردین 1386, 11:53 صبح
دوست من شما اصلا به LinkButton موجود در Repeater نباید Event بدی
چرا نباید بهش event بدم ؟
میشه شکلی از Link_Button که مورد نظرتونه را دقیقااینجا بیارین :متفکر: (به جای اون event)

amir.NET2
یک شنبه 19 فروردین 1386, 14:38 عصر
شما باید بهش یه CommandArgument و یه CommandName بدید بعد

توسط رویداد ItemCommand کنترل Repeater چک کنی

یه مثال :


<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:LinkButton CommandName="For Example : Edit" CommandArgument='<%# Eval("For Example Your Id") %>' ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>


در CodeBehind هم روی رویداد ItemCommand کنترل Repeater دابل کلیک کنید

بعد توسط

e.CommandName
و
e.CommandArgument

به مقادیرشان دسترسی داشته باشید

و براساس آنها کد بنویسید

:لبخندساده: