单击asp.net中的按钮以编程方式将控件添加到ajax更新面板

时间:2012-12-01 19:38:27

标签: c# asp.net ajax

我想在按钮点击时添加标签以更新面板。 我在.aspx文件中有以下代码...

 <asp:UpdatePanel ID="up" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false" >
                   <ContentTemplate >
                       <asp:Panel runat="server" ID="myPanel" >
                        <label id="ssd" runat="server" >abc</label>
                       </asp:Panel>
                       <asp:Button ID="Button1" runat="server" OnClick="Button1_Click"  Text="test"/>
                   </ContentTemplate>
               </asp:UpdatePanel>

并点击按钮事件..

protected void Button1_Click(object sender, EventArgs e)
{
    Label l1 = new Label();
    l1.ID = "label1";
    l1.Text = "this is it...";
    up.ContentTemplateContainer.Controls.Add(l1);      
}

但它不起作用..: - (

1 个答案:

答案 0 :(得分:1)

由于UpdatePanel的UpdateMode设置为Conditional,您需要从代码隐藏中手动更新它:

protected void Button1_Click(object sender, EventArgs e)
{
    Label l1 = new Label();
    l1.ID = "label1";
    l1.Text = "this is it...";
    up.ContentTemplateContainer.Controls.Add(l1); 

    up.Update();     
}

MSDN UpdatePanel.Update Method

  

如果您打算使用Update方法,请将UpdateMode属性设置为   有条件的。如果您想决定更新服务器中的面板   逻辑,确保ChildrenAsTriggers属性为false   没有为面板定义明确的触发器。

     

在典型的页面开发方案中,如果您定义触发器或if   对于UpdatePanel控件,ChildrenAsTriggers属性为true,   在页面生命周期中自动调用Update方法。

请注意,即使使用ASP.NET Ajax,也需要重新创建动态控件。因此,您需要最迟在page_load的下一个回发中手动创建标签。