需要動態控制項(不確定有多少個控制項)時,並且需要排版
無法使用HTML的Table,需使用ASP的Table
注意事項:
1、Page_Load 需要再PostBack時再次創建,否則觸發動態控制項時,整個表格就消失了
2、動態控制項的ID一定要加入,我有參考到沒加入ID的一樣可以動作,但是產生的第一次事件無法觸發
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
CreateTable(); //需要再PostBack再次建立表格,否則按鈕後會消失
}
protected void btn_Click(object sender, EventArgs e)
{
Button btn= (Button)sender;
if (btn== null)
return;
Response.Write(btn.ID);//抓取btnID
Label1.Text = btn.CommandArgument;//可以自訂義參數
}
private void CreateTable()
{
Table1.Rows.Clear();
Button[] btn = new Button[n];
for (int i = 0; i < 4; i++)
{
TableRow row = new TableRow();
TableCell cell= new TableCell();
cell.Text = "測試" + i;
row.Cells.Add(cell);
Table1.Rows.Add(row);
Button btn= new Button();
btn.ID = "btn" + i; //需要加入ID才不會第一次按鈕無反應
btn.Text = "btn" + i;
btn.Click += new EventHandler(btn_Click); //添加相應事件
btn.CommandArgument = i.ToString();//自訂義參數
cell = new TableCell();
cell.Controls.Add(btn);//在此欄加入按鈕
row.Cells.Add(cell);
Table1.Rows.Add(row);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
CreateTable();
}