我想在按钮点击时添加标签以更新面板。 我在.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);
}
但它不起作用..: - (
答案 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
的下一个回发中手动创建标签。