Sharepoint 2010 - 动态创建控件的事件处理程序问题

时间:2011-08-25 18:38:33

标签: events sharepoint-2010 web-parts

在使用Sharepoint 2010的WebPart中,我在动态创建LinkBut​​ton时遇到了问题,因为他的事件没有被触发。

我的代码是:

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
}

这个想法是从DB返回一个select,并为每个返回的记录创建一个带有linkbutton的结果。

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

他们将与另一个网络部分连接。

1 个答案:

答案 0 :(得分: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);
}