2009-05-18 176 views
2

我正在嘗試向我的GridView控件添加一個DropDownLists頁腳行。問題是我不知道在設計時我的DataSource中有多少列,所以我試圖使用AutoGenerateColumns = true,而不是指定列模板。因此,我將DropDownList控件添加到頁腳的方式是在GridView的DataBound事件上動態地編寫代碼。動態添加頁腳到ASP.NET GridView

這工作正常,但我想在用戶單擊按鈕時對每個DropDownLists的SelectedItem執行某些操作。這些動態添加的控件似乎不存在於用戶單擊按鈕後的背後,我相信問題是因爲我沒有在DropDownList控件上指定runat =「server」標記。

有沒有不同的方式,我可以將這些下拉列表添加到FooterTemplate而不指定所有列,以便在用戶單擊頁面上的按鈕時可以訪問其SelectedItems?

+0

你可以發佈你用來實例化控件的代碼嗎? – Lazarus 2009-05-18 19:59:08

回答

2

你完全正確 - 在回發之後,動態添加的控件不再存在。在DataBound事件運行之前,它們不會被重新添加。問題在於數據綁定事件發生後控制事件,也就是之後你的按鈕的Click事件。因此,在處理click事件的頁面生命週期中,這些控件尚未重新創建。

Here's a related question which might have some useful information

0

您需要創建的AddHandler:

dim dropdownlistname as new Dropdownlist 
Addhandler dropdownlistname.selected_indexchanged,AddressOf dropdownlistname_SelectedIndexChanged 

,那麼你需要如下創建子:

Protected Sub dropdownlistname_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddldept.SelectedIndexChanged 

'Insert Code here 

End sub 

那麼這樣做是它創建了一個事件,並宣佈一個地址去爲那個事件。您應該能夠在此事件中編寫任何代碼。