0
試圖以編程方式將按鈕添加到Webform。有些工作 - 其他工作則不行。 在下面的代碼中,我在Page_Load中添加了btnY和btnX。 這兩個工作 - 他們在頁面上顯示並觸發事件 和事件處理程序中的代碼工作.... 在頁面加載中,我也運行bindData,它獲取一個DataTable 並使用數據來創建控件。 在這個例子中我只創建Button。 這些按鈕將正確顯示在頁面上,但點擊後 它們只會執行回發。 事件處理程序中的代碼不起作用 - 它會被調用嗎? 事件處理程序對於所有按鈕都是相同的。 任何想法爲什麼或如何使它工作?c#以編程方式添加按鈕事件
protected void Page_Load(object sender, EventArgs e)
{
PlaceHolder1.Controls.Add(btn("btnY", "Y"));
Pages P = new Pages();
bindData(P.DT);
PlaceHolder1.Controls.Add(btn("btnX", "X"));
}
Button btn(string id, string text)
{
Button btn1 = new Button();
btn1.ID = id;
btn1.Text = text;
btn1.Click += new System.EventHandler(this.btn_click);
return btn1;
}
protected void bindData(DataTable dt)
{
foreach (DataRow row in dt.Rows)
{
render(Convert.ToInt32(row["PageKey"]));
}
}
protected void render(int pageKey)
{
PlaceHolder1.Controls.Add(btn("btn_" + pageKey.ToString(), "Edit"));
}
protected void btn_click(object sender, EventArgs e)
{
Button btn = (Button)sender;
string id = btn.ID;
Pages P = new Pages();
bindData(P.DT);
lt.Text = "ID=" + id;
}
添加'事件Handler'你'BTN '內部'Page_Load' – prograshid
剛剛在page_load中試過這個...仍然沒有好的foreach(控件c在this.Controls中) { if(c是Button) { Button b =(Button)c; b.Click + = new System.EventHandler(this.btn_click); } } –