0

i want to add a label to update panel, on button click.. i have following code in .aspx file...

 <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>

and on button click event..

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);      
}

but its not working ..:-(

4

1 回答 1

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();     
}

MSDNUpdatePanel.Update方法

如果您计划使用 Update 方法,请将 UpdateMode 属性设置为 Conditional。如果您希望决定在服务器逻辑中更新面板,请确保 ChildrenAsTriggers 属性为 false,并且没有为面板定义显式触发器。

在典型的页面开发场景中,如果您定义了触发器,或者如果 UpdatePanel 控件的 ChildrenAsTriggers 属性为 true,则在页面生命周期中会自动调用 Update 方法。

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

于 2012-12-01T19:41:47.347 回答