PDA

View Full Version : رویداد کلیک روی hyperlink و اجرای کد مربوطه؟؟



aminie
دوشنبه 29 آبان 1391, 22:58 عصر
سلام
من یک hyperlink در قسمت themplate در gridview دارم که میخوام با کلیک روی hyperlink یک کدی اجرا بشه .این کد رو باید در کدام رویداد بنویسم که با کلیک روی سطر کد مربوطه انجام بشه؟ودر قسمت navigateurl چی بنویسم که hyperlink ، لینک داشته باشه؟
ممنون

ali9698
سه شنبه 30 آبان 1391, 00:14 صبح
متوجه نشدم؟ با کلیک روی سطر کد hyperlink اجرا بشه؟!!!

fakhravari
سه شنبه 30 آبان 1391, 00:39 صبح
یک کدی اجرا بشه میشه همون لینک ؟؟؟
<asp:HyperLink ID="HyperLink1" runat="server"
NavigateUrl='<%# String.Format("~/Show/Display_PostID.aspx?TopicID={0}&Subject={1}" ,Eval("TopicID"), Eval("Subject")) %>'
Target="_blank">
<%# Eval("Subject")%>
</asp:HyperLink>

nn9090
سه شنبه 30 آبان 1391, 14:04 عصر
ممنون
اما من دنبال ی کد هستم که وقتی روی هایپرلینک کلیک میکنم اول id اون سطر را برگردونه وسپس یک کدی مثلا کد زیر اجرا بشود.


int a,b;
a=a+b;
label1.text=a;

fakhravari
سه شنبه 30 آبان 1391, 15:48 عصر
ممنون
اما من دنبال ی کد هستم که وقتی روی هایپرلینک کلیک میکنم اول id اون سطر را برگردونه وسپس یک کدی مثلا کد زیر اجرا بشود.


int a,b;
a=a+b;
label1.text=a;


بعد این را روی چه قسمتی میخواهین ؟ code-behind

EnKamran
سه شنبه 30 آبان 1391, 17:14 عصر
با HyperLink چرا ؟ LinkButton استفاده کنید خوب مثل همون Hyperlink میشه

aminie
سه شنبه 30 آبان 1391, 22:58 عصر
با HyperLink چرا ؟ LinkButton استفاده کنید خوب مثل همون Hyperlink میشه
ممنون
یک linkbutton در template گذاشتم و commandname اون رو link1 گذاشتم ودر بخش GridView_RowCommand کد زیر را نوشتم:

if (e.CommandName == "link1 ")
{
int index = Convert.ToInt32(e.CommandArgument);
}

اما error زیر رو میده.
Input string was not in a correct format
علت چیه و چه کاری باید انجام بدم؟
در صورتی که همین مراحل رو از قسمت Edit Columns میرم درست جواب میده.چرا در قسمت template کار نمیکنه؟چیکارکنم کارکنه؟

arefba
چهارشنبه 01 آذر 1391, 06:42 صبح
کد های asp رو برای هر دو کارتون تماشا کنید میفهمید جریان چیه

aminie
چهارشنبه 01 آذر 1391, 21:28 عصر
کسی نمیدونه باید چه کدی بنویسیم که linkbutton که در template هست در رویداد GridView_RowCommand شناخته شود؟؟
وقتی linkbutton در template گذاشتم و در بخش GridView_RowCommand کدش رونوشتم نمیشناسه.چه کدی باید نوشت تا بتونه linkbutton را بشناسه؟؟
ممنون میشم اگرکمک کنید

fakhravari
چهارشنبه 01 آذر 1391, 22:19 عصر
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="TopicID"
DataSourceID="SqlDataSource1"
onrowcommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("TopicID") %>' >LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
GridViewRow row = (GridViewRow)((LinkButton)e.CommandSource).NamingC ontainer;
LinkButton lbl = (LinkButton)row.FindControl("LinkButton1");

lbl.Text = (int.Parse(lbl.CommandArgument) + 20).ToString();

}

aminie
چهارشنبه 01 آذر 1391, 23:11 عصر
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="TopicID"
DataSourceID="SqlDataSource1"
onrowcommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("TopicID") %>' >LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
GridViewRow row = (GridViewRow)((LinkButton)e.CommandSource).NamingC ontainer;
LinkButton lbl = (LinkButton)row.FindControl("LinkButton1");

lbl.Text = (int.Parse(lbl.CommandArgument) + 20).ToString();

}

ممنون اما خط

lbl.Text = (int.Parse(lbl.CommandArgument) + 20).ToString();

خطای زیر رو میده.
Input string was not in a correct format
علت چیه و چه کاری باید انجام داد؟

fakhravari
پنج شنبه 02 آذر 1391, 01:45 صبح
کد بالا درسته باید دیباگ کنید ببنید مشکل از کجان

aminie
جمعه 03 آذر 1391, 19:43 عصر
کد بالا درسته باید دیباگ کنید ببنید مشکل از کجان

ممنون
خطی که error میداد رو حذف کردم درست شد .حالا به ی مشکل دیگه برخوردم.
برای page بندی کد زیر رونوشتم:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}

و کدی که آقای fakhravari گفتند رو در GridView1_RowCommand نوشتم .به جواب سوالم رسیدم اما الان وقتی روی page ها کلیک میکنم از خط زیر

GridViewRow row = (GridViewRow)((LinkButton)e.CommandSource).NamingC ontainer;

خطا میگیره وخطاش هم اینه:

Unable to cast object of type 'System.Web.UI.WebControls.GridView' to type 'System.Web.UI.WebControls.LinkButton'.

علت چیه و چه طوری باید رفعش کنم؟؟

fakhravari
جمعه 03 آذر 1391, 22:17 عصر
در if (!IsPostBack)
{
گرید پر کنید.
GridViewRow row = (GridViewRow)((LinkButton)e.CommandSource)
چیزی که روش کلیک کردی از جنس LinkButton

برای صفحه بندی هم
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.DataSource = دیتاتیبل
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();

}