Sharepoint 2010 - проблема с обработчиками событий для динамически создаваемых элементов управления - PullRequest
1 голос
/ 25 августа 2011

В WebPart, использующем Sharepoint 2010, у меня возникла проблема при динамическом создании LinkButton, потому что его событие не было запущено.

Мой код:

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
}

Идея состоит в том, чтобы вернуть выбор из БД и создать результат с кнопкой ссылки для каждой возвращаемой записи.

Эти LinkButtons будут созданы после действия пользователя, потому что его нельзя создать в OnInit.

Они будут соединяться с другой веб-частью.

1 Ответ

1 голос
/ 28 августа 2011

Пожалуйста, переместите код для динамически созданной кнопки и обработчика события в 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);
}
...