嵌套的UpdatePanel:为什么ChildrenAsTriggers没有效果
本文关键字:ChildrenAsTriggers 有效果 为什么 UpdatePanel 嵌套 | 更新日期: 2023-09-27 17:57:39
给出一个带有两个嵌套更新面板的简单示例。它们是嵌套的,每个都有一个标签,标签中填充了代码后面的当前时间。我不明白为什么外部UpdatePanel上的ChildrenAsTriggers="true"
-属性没有效果?当我点击"更新嵌套面板"按钮时,父UpdatePanel中的时间不会更新。但据我所知,它应该是:
<asp:ScriptManager ID="ScriptManager1" runat="server"
onasyncpostbackerror="ScriptManager1_AsyncPostBackError">
</asp:ScriptManager>
<asp:Button ID="ButtonUpdate" runat="server" Text="Update Panel 1"
style="margin-top: 15px" onclick="ButtonUpdate_Click" />
<asp:Button ID="ButtonUpdateNestedPanel" runat="server" Text="Update Nested Panel"
style="margin-top: 15px" onclick="ButtonUpdateNestedPanel_Click" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ButtonUpdate" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label1" runat="server" />
<asp:UpdatePanel ID="UpdatePanelNested" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ButtonUpdateNestedPanel" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:Label ID="LabelNested" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
谢谢任何小费!sl3dg3
p.s.:代码隐藏:
protected void ButtonUpdate_Click(object sender, EventArgs e)
{
LabelNested.Text = DateTime.Now.ToString();
Label1.Text = DateTime.Now.ToString();
}
protected void ButtonUpdateNestedPanel_Click(object sender, EventArgs e)
{
LabelNested.Text = DateTime.Now.ToString();
Label1.Text = DateTime.Now.ToString();
}
当ChildrenAsTriggers属性设置为true并且UpdatePanel控件的任何子控件都会导致回发时。嵌套UpdatePanel控件的子控件不会更新外部UpdatePanel控件,除非它们被明确定义为父面板的触发器。http://forums.asp.net/t/1422425.aspx/1
这应该是。。。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ButtonUpdate" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="ButtonUpdateNestedPanel" EventName="Click" />
</Triggers>
......
......
我认为,为了在操作中看到所需的效果,您实际上应该将按钮作为子项添加到内容模板中。"ChildrenAsTriggers"属性仅适用于"ContentTemplate"块的直接子级。
ChildrenAsTriggers="true"如果希望从UpdatePanel控件的直属子控件回发以更新面板的内容,请将ChildrenAsTriggers属性设置为true。嵌套UpdatePanel控件的子控件不会导致父UpdatePanel控件内容的更新,除非显式调用update方法或将子控件定义为触发器。