這是非常相似的這些問題,但他們似乎並沒有幫我(會解釋爲什麼下面):
如何添加一個事件處理程序的動態生成按鈕
- How to create an onClick eventHandler for a dynamically created button
- asp.net dynamically button with event handler
- asp:Button Click event not being fired
我創建一個C#aspx頁面。該頁面抓取一堆數據,然後從中創建一張表。表中的一列包含一個按鈕,它在構建數據時動態創建(因爲按鈕的操作依賴於表中的數據)。
Default.aspx的
<body>
<form id="form1" runat="server">
<div>
<asp:Table ID="tblData" runat="server"></asp:Table>
</div>
</form>
</body>
Defafult.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
Build_Table();
}
protected void Build_Table()
{
//create table header row and cells
TableHeaderRow hr_header = new TableHeaderRow();
TableHeaderCell hc_cell = new TableHeaderCell();
hc_cell.Text = "This column contains a button";
hr_header.Cells.Add(hc_cell);
tblData.Rows.Add(hr_header);
//create the cell to contain our button
TableRow row = new TableRow();
TableCell cell_with_button = new TableCell();
//create the button
Button btn1 = new Button();
btn1.Click += new EventHandler(this.btn1_Click);
//add button to cell, cell to row, and row to table
cell_with_button.Controls.Add(btn1);
row.Cells.Add(cell_with_button);
tblData.Rows.Add(row);
}
protected void btn1_Click(Object sender, EventArgs e)
{
//do amazing stuff
}
這裏就是我絆倒了。我明白我的EventHandler並沒有被解僱,因爲它需要轉移到Page_Load方法中。但是,如果我將btn1創建和EventHandler移至Page_Load,我無法再在Build_Table中訪問它們!
我看到的所有代碼示例都有btn1靜態添加到ASPX頁面中,或者在Page_Load中動態創建它。什麼是我想要完成的最好的方法?
我跑你的代碼,它的工作原理,事件處理程序沒有問題。你有沒有證實你的經紀人正在解僱,但是在做「驚人的事情」時發生了一些不好的事情? –