0

我敢肯定,几乎每个在 .net 中编程的人都遇到过与动态创建按钮类似的问题。

示例场景..

我有一个gridview,并且在其中一个gridview 字段中我有一个按钮。通常在 .net 中使用 Visual Studio,您可以轻松获取按钮的单击事件,但是由于这些按钮是动态创建的,因此它们并不容易获取。我很好奇获取按钮点击事件的最佳方法是什么。

我理解它可以使用 dopostback;但是,我不确定如何实现它,也没有尝试过,因为我也读过 dopostback 方法不是一个很好用的方法。这是为什么?

4

3 回答 3

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);
  }
}
于 2009-01-30T20:37:42.813 回答
2

在 Gridview 的 ItemCreated 事件期间,使用 FindControl 获取对按钮的引用并将事件处理程序附加到那里。IE。btn.Click += Somehandler;

于 2009-01-30T20:38:16.260 回答
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

谢谢你们的帮助。我真的很感激。我敢肯定,您的回答将来会对您有所帮助。

于 2009-02-04T15:50:26.463 回答