动态添加控件/事件不起作用

时间:2012-07-10 13:15:05

标签: c# asp.net

任何帮助将不胜感激 -

这是我的aspx代码 -

<div id="div_Detail" class="div_det" runat="server" />

在我的代码后面 -

protected void Page_Load(object sender, EventArgs e) {
  LoadDetail();
}

private void LoadDetail() {
    HtmlTable tbl = new HtmlTable();
    HtmlTableRow row = new HtmlTableRow();
    HtmlTableCell cell = new HtmlTableCell();

    Button bUpdate = new Button();
    bUpdate.Text = "Update";
    bUpdate.Click += this.Update_Click;

    cell.Controls.Add(bUpdate);
    row.Cells.Add(cell);
    tbl.Rows.Add(row);
    div_Detail.Controls.Add(tbl);
}

private void Update_Click(object sender, EventArgs e) {
    //Do something
}

我在页面上看到了带有正确文字的按钮。但是点击该按钮后,Update_Click永远不会被调用。

我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

尝试为按钮指定ID。在回发期间,.NET引擎需要控件上的ID以将控件与给定的事件委托相关联。

编辑:

此代码可以正常工作:

 protected void Page_Load(object sender, EventArgs e) {
        LoadDetail();
    }

    private void LoadDetail() {
        HtmlTable tbl = new HtmlTable();
        HtmlTableRow row = new HtmlTableRow();
        HtmlTableCell cell = new HtmlTableCell();

        Button bUpdate = new Button();
        bUpdate.Text = "Update";
        bUpdate.Click += this.Update_Click;
        bUpdate.ID = "btnID";

        cell.Controls.Add(bUpdate);
        row.Cells.Add(cell);
        tbl.Rows.Add(row);
        div_Detail.Controls.Add(tbl);
    }

    private void Update_Click(object sender, EventArgs e) {
        //Do something 
    } 

答案 1 :(得分:1)

给按钮一个Id,一切都会正常。

bUpdate.Id = "btnUpdate";

答案 2 :(得分:1)

尝试这个可以帮助你

    bUpdate.Click += new System.EventHandler(this.bUpdate_OnClick);

protected void bUpdate_OnClick(object sender, EventArgs e) {


}