2011-08-25 46 views
1

在使用Sharepoint 2010的WebPart中,动态创建LinkBut​​ton时发生问题,因为他的事件未被触发。Sharepoint 2010 - 动态创建控件的事件处理程序问题

我的代码是:

Default.aspx的

<asp:TextBox ID="formAccountCode" runat="server" MaxLength="8" Columns="8"></asp:TextBox> 
<asp:Table ID="idTabela" runat="server" Width="100%" BorderWidth="1px" GridLines="Both"></asp:Table> 
<asp:Button ID="btPesquisar" runat="server" onclick="btPesquisar_Click" Text="Pesquisar" /> 

Default.aspx.cs

protected void btPesquisar_Click(object sender, EventArgs e) 
{ 
    LinkButton lkButton = new LinkButton(); 
    lkButton.Text = "Teste Tabela"; 
    lkButton.ID = "link1"; 
    lkButton.Attributes.Add("runat", "server"); 
    lkButton.CommandArgument = "Codigo 1"; 
    lkButton.Command += test; 

    TableRow tr; 
    TableCell td1; 

    td1 = new TableCell(); 
    td1.Controls.Add(lkButton); 

    tr = new TableRow(); 
    tr.Cells.Add(td1); 
    idTabela.Rows.Add(tr); 

    idTabela.DataBind(); 
} 

protected void test(object sender, EventArgs e) 
{ 
    formAccountCode.Text = "HI"; // just for test 
} 

的想法是从数据库返回一个选择和创建LinkBut​​ton的每个结果记录返回。

这些LinkBut​​tons将在用户执行操作后创建,因为这不能在OnInit中创建。

他们将连接到另一个Web部件。

回答

1

请把代码动态创建的按钮和事件处理程序CreateChildControls()并调用EnsureChildControls()Onload

例如:

protected override void CreateChildControls() 
{ 
    base.CreateChildControls(); 

    // Create our drop down list, but don't populate it yet 
    _dropDownList = new DropDownList(); 
    this.Controls.Add(_dropDownList); 
} 
相关问题