我确信几乎每个在.net中编程的人都会遇到与动态创建按钮类似的问题。
示例场景..
我有一个gridview,在一个gridview字段中,我有一个按钮。通常在.net中使用visual studio可以轻松获取按钮的单击事件,但是由于这些按钮是动态创建的,因此它们不容易抓取。我很好奇抓住按钮点击事件的最佳方法是什么。
我理解它可能使用dopostback;但是,我不知道如何实现它,也没有尝试过,因为我也读过dopostback方法并不是一个非常好用的方法。那是为什么?
答案 0 :(得分:4)
在gridview中,有一个名为RowDatabound的事件。在上面放一个事件处理程序:
gv.RowDataBound += new EventHandler(rowBound);
现在在该函数中,您将使用FindControl来定位按钮并添加处理程序:
function rowbound(Object sender, GridViewRowEventArgs e) { if(e.Row.RowType == DataControlRowType.DataRow) { var b = e.Row.FindControl("btn") as Button; b.Click += new EventHandler(handleBtnClick); } }
答案 1 :(得分:2)
在Gridview的ItemCreated事件期间,使用FindControl获取对按钮的引用并在那里附加事件处理程序。即。 btn.Click + = Somehandler;
答案 2 :(得分:1)
我没有意识到ItemCommand事件可用于在TemplateField中创建的按钮。
我真正需要做的就是......
Private Sub GridView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewCommandEventArgs) Handles DetailsView1.ItemCommand
If e.CommandName = "myButton" Then
//'myButton press event logic here
End If
End Sub
感谢您的帮助..我真的很感激。你的答案将来会有所帮助我确定。