2009-01-30 22 views
0

我敢肯定,在.net中几乎所有人都已经编程跑进动态创建按钮类似的问题...NET开发动态创建控件需要自己的方法

示例场景..

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

我明白它可能使用dopostback;然而,我不知道如何实现它,也没有尝试过,因为我也阅读了dopostback方法并不是一个很好的方法。这是为什么?

回答

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 

感谢您的帮助家伙..我真的很感激。我相信你的答案在将来会有帮助。

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); 
    } 
} 
+0

我想goodwince是问如何设置一个事件处理程序到GridView中的一个动态创建的控件。 cmsjr的答案似乎更适合。 – 2009-01-30 21:12:21

2

在GridView的ItemCreated事件使用FindControl获取对按钮的引用并在那里附加事件处理函数。即。 btn.Click + = Somehandler;