2012-07-10 62 views
0

任何帮助,将不胜感激 -添加控制/事件有关的动态不起作用

这里是我的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从不会被调用。

我错过了什么吗?

回答

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 
    } 
+0

我添加了ID,但它仍然只是回来与的IsPostBack =真实的Page_Load。它没有得到事件。 – duckmike 2012-07-10 13:22:46

+0

该代码本身起作用,但不在我的应用程序中。我试图简化它的发布目的,但基本上我有一个div,其中包含2个选项卡的选项卡容器。这些选项卡具有保存此按钮所在表格的div。整个页面中大约有3000行代码。会有另一个原因,为什么这只会回到Page_Load()? – duckmike 2012-07-10 13:34:39

+0

如果您拥有多个具有相同ID的控件,或者AJAX控件执行其他操作,那么可能会妨碍您的操作。 – Josh 2012-07-10 13:37:03

1

给该按钮的标识,一切都将正常工作。

bUpdate.Id = "btnUpdate";

1

试试这个可以帮助ü

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

protected void bUpdate_OnClick(object sender, EventArgs e) { 


}