2009-01-30 24 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;