【问题标题】:Sharepoint 2010 - Problem with event handlers for dynamically created controlsSharepoint 2010 - 动态创建控件的事件处理程序问题
【发布时间】:2011-11-03 23:05:29
【问题描述】:

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

我的代码是:

默认.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" />

默认.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
}

这个想法是从数据库中返回一个选择,并使用链接按钮为返回的每条记录创建一个结果。

这些链接按钮将在用户操作后创建,因为它不能在 OnInit 中创建。

它们将与另一个 Web 部件连接。

【问题讨论】:

    标签: events sharepoint-2010 web-parts


    【解决方案1】:

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

    例如:

    protected override void CreateChildControls()
    {
        base.CreateChildControls();
    
        // Create our drop down list, but don't populate it yet
        _dropDownList = new DropDownList();
        this.Controls.Add(_dropDownList);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多