.net开发动态创建的控件需要自己的方法

时间:2009-01-30 20:33:35

标签: asp.net javascript code-behind server-side

我确信几乎每个在.net中编程的人都会遇到与动态创建按钮类似的问题。

示例场景..

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

我理解它可能使用dopostback;但是,我不知道如何实现它,也没有尝试过,因为我也读过dopostback方法并不是一个非常好用的方法。那是为什么?

3 个答案:

答案 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

感谢您的帮助..我真的很感激。你的答案将来会有所帮助我确定。