我有一个内容页面,其中更新面板内有 3 个面板
CALL
在页面加载第二个面板 <asp:UpdatePanel ID="updateOfEmployee" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:panel ID="verificationOfEmployee" BorderStyle="Solid" BorderWidth="1px" runat="server">
--some additional controls like textbox, dropdown list and validation control, visibility of all these controls set to true.
</asp:panel>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="emp_Address_Update" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="emp_Addresss_Panel" BorderStyle="Solid" BorderWidth="1px" runat="server">
--some additional controls like textbox, dropdown list and validation control, visibility of all these controls set to true.
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Panel ID="emp_Other_Details" BorderWidth="1px" BorderStyle="Solid" runat="server">
--some additional controls like textbox, dropdown list and validation control, visibility of all these controls set to true.
</asp:Panel>code
;第三个面板 emp_Addresss_Panel.Visible = false
= false;在按钮一的点击事件中,我试图将第二个和第三个面板的可见性设置为 true,将第一个面板的可见性设置为 false,但第二个和第三个面板在浏览器中不可见,我在第二个面板的 if 语句中检查了 visible 属性并发现第二个面板可见已经设置为 true 但它没有出现在浏览器中。这是我在第一个面板的点击事件中的代码的一部分。
emp_Other_Details.Visible
答案 0 :(得分:1)
默认情况下,UpdatePanel
的 AJAX 回发不会导致其外部的任何内容更新,包括另一个 UpdatePanel
中的控件。您有两种解决方案。
1.将每个 Panel
移到同一个 UpdatePanel
<asp:UpdatePanel ID="updateOfEmployee" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="verificationOfEmployee" BorderStyle="Solid" BorderWidth="1px" runat="server">
--some additional controls like textbox, dropdown list and validation control, visibility of all these controls set to true.
</asp:Panel>
<asp:Panel ID="emp_Addresss_Panel" BorderStyle="Solid" BorderWidth="1px" runat="server" Visible="false">
--some additional controls like textbox, dropdown list and validation control, visibility of all these controls set to true.
</asp:Panel>
<asp:Panel ID="emp_Other_Details" BorderWidth="1px" BorderStyle="Solid" runat="server" Visible="false">
--some additional controls like textbox, dropdown list and validation control, visibility of all these controls set to true.
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
verificationOfEmployee.Visible = false;
emp_Addresss_Panel.Visible = true;
emp_Other_Details.Visible = true;
2.添加交叉UpdatePanel
触发器
注意:通过向第二个 AsyncPostBackTrigger
添加 UpdatePanel
,它可以在第一个 UpdatePanel
的事件中刷新。请注意,您的第三个 Panel
不会更新,因为它既不在 UpdatePanel
中,也不在它自己的一个中。
演练: Cross-UpdatePanel Triggers
<asp:UpdatePanel ID="updateOfEmployee" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="verificationOfEmployee" BorderStyle="Solid" BorderWidth="1px" runat="server">
--some additional controls like textbox, dropdown list and validation control, visibility of all these controls set to true.
</asp:Panel>
<asp:Button ID="updateButton" runat="server" Text="Update" OnClick="updateButton_Click" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="emp_Address_Update" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="emp_Addresss_Panel" BorderStyle="Solid" BorderWidth="1px" runat="server" Visible="false">
--some additional controls like textbox, dropdown list and validation control, visibility of all these controls set to true.
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="updateButton" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Panel ID="emp_Other_Details" BorderWidth="1px" BorderStyle="Solid" runat="server" Visible="false">
--some additional controls like textbox, dropdown list and validation control, visibility of all these controls set to true.
</asp:Panel>
protected void updateButton_Click(object sender, EventArgs e)
{
verificationOfEmployee.Visible = false; // will render
emp_Addresss_Panel.Visible = true; // will render
emp_Other_Details.Visible = true; // will NOT render
}