我在gridview RowDataBound事件中添加了LinkButton,这里我也在点击事件
protected void cgvProjectPropertyList_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lnkDelete = new LinkButton();
lnkDelete.Text = "Delete";
e.Row.Cells[COL_INDEX_DELETE].Controls.Add(lnkDelete);
lnkDelete.CommandName = "Delete";
lnkDelete.Click += new EventHandler(lnkDelete_Click);
}
}
void lnkDelete_Click(object sender, EventArgs e)
{
}
lnkDelete_Click事件无效。
感谢。
答案 0 :(得分:1)
问题是由于您动态添加LinkButton
控件,这在ASP.NET WebForms中非常痛苦。
为了使ASP.NET中的事件能够工作,控件必须在Load事件之后存在,因为那是触发控制事件的时候。否则,没有任何Linkbutton
将click事件绑定到。
我的建议是您尝试在标记中添加LinkButton
。它会为你节省很多痛苦。然后,您可以使用RowCommand
上的GridView
代替。
如果这不是一个选项,则必须在Load事件中添加Linkbutton并在其中为其click事件注册处理程序。
我有post正在使用ListView
,正在使用此方法。你应该能够从中吸取教训。
答案 1 :(得分:0)
尝试将public
放在void lnkDelete_Click(object sender, EventArgs e)
有时会出现一些问题
答案 2 :(得分:0)
您可以使用RowCommand
代替..
protected void cgvProjectPropertyList_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
e.CommandArgument // will Return current Row primary key value, rather row Index
}
}
您需要确保在GridView OnRowCommand="cgvProjectPropertyList_RowCommand"
答案 3 :(得分:0)
问题是您在gridview的RowDataBound事件中添加了LinkButtons。但是当页面在点击链接按钮时回发时,它们还没有被重新创建,因此页面没有任何内容可以将点击事件绑定到。如果它是回发,您将需要在PreRender事件中再次创建它们。因此,您可能还需要存储一些用于确定如何在ViewState中创建LinkButtons的信息,以便您可以在PreRender中重新创建它们。执行此操作后,控件将可用于页面以将事件绑定到,并且将处理您的处理程序。