我在asp.net中有一个网格,在asp.net里面我绑定数据作为linkbutton点击链接按钮我需要在代码后面调用一个方法。附加事件不是我的代码中的woking。我怎么能解决这个问题?
我的代码与此类似,
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton link = new LinkButton();
link.Text = e.Row.Cells[0].Text;
link.CommandArgument = "Hello";
link.Click += new EventHandler(this.onLinkClick);
e.Row.Cells[0].Controls.Add(link);
}
}
protected void onLinkClick(object sender, EventArgs e)
{
LinkButton btn = (LinkButton)(sender);
string value = btn.CommandArgument;
TextBox1.Text=value;
}
答案 0 :(得分:1)
您必须每次在Page Load
中调用将源绑定到GridView的函数离。
protected void Page_Load(object sender, EventArgs e)
{
PopulateGridView();
}
答案 1 :(得分:1)
因为没有添加链接按钮的逻辑(我想你必须为每条记录添加它)为什么不在设计时添加它?
<asp:GridView ID="GridView1" runat="server">
....
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>
</ItemTemplate>
......
</asp:GridView>
确保页面上的AutoEventWireup="true"
答案 2 :(得分:0)
处理RowCommand
事件GridView
以处理按钮的“事件”,并且您正在动态添加LinkButton
,然后必须在Page_Init
或{{1}执行数据绑定}}
Page_Load
答案 3 :(得分:0)
您需要在GridView的RowCreated事件中为动态按钮挂钩事件处理程序,否则它将不会触发。然后在RowDataBound事件处理程序中使用“FindControl”。就个人而言,我根本不喜欢这种模式,但有时它是不可避免的。
您应该将GridView的<asp:ButtonField>
与网格的RowCommand事件一起使用。这样,您就不是创建动态控件并将事件连接起来的人。