2011-05-09 56 views
2

我在ASP.NET中有一個頁面,並且動態地將WebControls.Button的一個子類添加到預先存在的靜態TableCell的Controls數據成員中。預期按鈕在瀏覽器中顯示正常。但是當我點擊按鈕時,我爲button.Click添加的事件處理程序未被調用。有什麼建議,爲什麼這是?無法在ASP.NET中添加編程控件

var controls = this.displaytable.Rows[i].Cells[j].Controls; 
var button = new TableButton(j, i); 
button.Click += new EventHandler(this.button_Click); 
button.UseSubmitBehavior = false; 
button.Text = "Available"; 
controls.Add(button); 
+3

此代碼位於何處?動態控件必須在回發時重新創建,否則您將無法處理其回發事件。 – 2011-05-09 18:20:29

+0

看看我對這個問題的回答:http://stackoverflow.com/questions/5939313/dynamically-assign-button-events-in-c-asp-net/5939408#comment-6845140 – keyboardP 2011-05-09 18:21:55

+0

我檢查了該頁面,創建了控件。它沒有解決問題。 – Puppy 2011-05-09 19:17:45

回答

1

動態地添加按鈕必須在每次請求被創建,最有可能是提高回發事件之前足夠(例如onLoad)實現。按鈕需要有一段時間的明確ID:

var controls = this.displaytable.Rows[i].Cells[j].Controls; 
var button = new TableButton(j, i); 
button.Click += new EventHandler(this.button_Click); 
button.UseSubmitBehavior = false; 
button.Text = "Available"; 
button.Id = string.Format("TableButton_{0}_{1}", j, i); 
controls.Add(button); 

這SO答案可能有助於點點:ASP.NET dynamic Command Button event not firing

相關問題