C# 如何在同一.aspx页面上使用两个更新面板
我在一个页面上有两个更新面板。我想在不同的-2条件下更新这两个条件。但我不知道为什么这不会发生。我为这两个都指定了触发器,但没有帮助,下面是我的代码 请让我知道我错在哪里 实际上,第一个更新面板中有三个下拉列表,当它们的selectedindexchange被触发时,第二个更新面板的内容也会更新C# 如何在同一.aspx页面上使用两个更新面板,c#,asp.net,triggers,updatepanel,C#,Asp.net,Triggers,Updatepanel,我在一个页面上有两个更新面板。我想在不同的-2条件下更新这两个条件。但我不知道为什么这不会发生。我为这两个都指定了触发器,但没有帮助,下面是我的代码 请让我知道我错在哪里 实际上,第一个更新面板中有三个下拉列表,当它们的selectedindexchange被触发时,第二个更新面板的内容也会更新 <asp:UpdatePanel ID="upSearch" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional"&g
<asp:UpdatePanel ID="upSearch" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<ContentTemplate>
<div style="float: left; width: auto;">
<asp:DropDownList ID="ddlLocation" runat="server" Width="206px" DataTextField="LocationName"
DataValueField="Locationid" AutoPostBack="true" OnSelectedIndexChanged="ddlLocation_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="ddlArea" runat="server" Width="200px" DataTextField="AreaName"
DataValueField="Areaid" AutoPostBack="true" OnSelectedIndexChanged="ddlArea_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList ID="ddlRoom" runat="server" Width="200px" DataTextField="RoomName"
DataValueField="Roomid">
</asp:DropDownList>
</div>
<div style="float: left; width: 80px;">
<asp:Button ID="btnSearch" runat="server" Text="Search" ValidationGroup="vgSearch"
CssClass="bluebtn" UseSubmitBehavior="false" OnClick="btnSearch_Click" />
</div>
<div style="float: left; width: 99%; padding: 5px 0px;">
</div>
</ContentTemplate>
</asp:UpdatePanel>
第二个是:-
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<ContentTemplate>
<asp:Calendar ID="calSchedule" runat="server" NextPrevFormat="FullMonth" OnDayRender="calSchedule_DayRender"
OnVisibleMonthChanged="calSchedule_VisibleMonthChanged">
<DayHeaderStyle CssClass="dayheaderStyle" />
<NextPrevStyle />
<OtherMonthDayStyle BackColor="#ffffff" />
<SelectedDayStyle />
<TitleStyle CssClass="titleStyle" />
<TodayDayStyle BackColor="#ffffa0" ForeColor="#6699cc" />
<WeekendDayStyle />
<DayStyle CssClass="dayStyle" />
</asp:Calendar>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
如果使用嵌套的更新面板,请参考以下示例代码:
<asp:UpdatePanel id="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<fieldset>
<legend>Parent UpdatePanel</legend>
Last refresh <%=DateTime.Now.ToString() %> <br />
<asp:Button ID="Button1" runat="server" Text="Refresh Outer Panel" />
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<fieldset>
<legend>Nested UpdatePanel</legend>
Last refresh <%=DateTime.Now.ToString() %> <br />
<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
</fieldset>
</ContentTemplate>
</asp:UpdatePanel>
</fieldset>
</ContentTemplate>
</asp:UpdatePanel>
父更新面板
上次刷新
嵌套更新面板
上次刷新
如果不使用嵌套的更新面板,则从代码的两个UpdatePanel中删除“UpdateMode”条件。如果希望发生异步回发,请从DropDownList中删除Autopostback=“True”。
还有,现在到底出了什么问题?UpdatePanel根本不更新
编辑。同时删除ChildrenaStrigger,因为此时不需要它首先,我想回顾一下
UpdateMode
面板将更新其内容在页面上的每个帖子上,它们可以是部分呈现帖子或完整帖子,在这两种情况下,面板的内容都将更新始终
面板的内容仅在满足不同条件时才会更新:Conditional
- 默认情况下,由其子对象触发的事件将触发更新,您可以更改此行为设置
ChildrenAsTriggers=“false”
- 在
UpdatePanel
- 当您显式调用
方法时UpdatePanel.Update()
- 整版文章将触发更新
- 默认情况下,由其子对象触发的事件将触发更新,您可以更改此行为设置
- 每个UpdatePanel在其子控件引发事件时更新
- 名为:
的UpdatePanel 1将仅在其子控件引发事件时更新up1
- 名为
的UpdatePanel 2将在其子控件引发事件时更新up2
- 当触发定义的触发器时,名为
的UpdatePanel 2也将被更新,在这种情况下,当UpdatePanel 1上名为up2
的ddl1OnPanel1
DropDownList启动其
SelectedIndexChanged
- 当UpdatePanel 1上名为
的ddl2OnPanel1
引发其DropDownList
时,名为SelectedIndexChanged
的UpdatePanel 2也将被更新,因为在代码中它显式调用:up2
this.up2.Update()代码>
在面板1上的每个立柱上:
在面板2的每个立柱上:
简单输出
您可以更改UpdatePanel 2上的
UpdateMode=“Always”
,以查看差异,如果您这样做,此面板将在每篇文章上更新,无论是完整文章还是来自UpdatePanel的文章1我成功地将其用于4个UpdatePanel
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnableScriptGlobalization="true" CombineScripts="false" ScriptMode="Release">
</asp:ToolkitScriptManager>
这行代码通常不适用于更新面板。我没有使用嵌套的更新面板。请仔细研究我的代码和问题。您是否有任何错误?如果有,请粘贴错误消息?没有,我没有任何错误。您是否尝试过在BTN搜索?单击后面的代码,您可以更新第二面板控件!只是为了让每个人都清楚地看到这一点——“第一个更新面板中有三个下拉列表,当他们选择的索引更改被触发时,第二个更新面板的内容也会更新”,这就是问题所在吗?更新面板2在不应该刷新时刷新?是的,这就是问题所在。如果我删除AutoPostBack=True,则我的selectedindexchange事件将不起作用。那么问题到底是什么?页面是否发回或什么也没有发生?页面按所选的索引火发回,并且第二个更新面板的内容也被刷新。我也试过让孩子们从谎言变为谎言,但这是行不通的
<asp:ScriptManager runat="server" ID="scriptManager" />
<asp:Button Text="Full Post" runat="server" />
<br />
<asp:UpdatePanel runat="server" ID="up1" UpdateMode="Conditional">
<ContentTemplate>
<asp:DropDownList runat="server" ID="ddl1OnPanel1" AutoPostBack="true" OnSelectedIndexChanged="ddl1OnPanel1_SelectedIndexChanged">
<asp:ListItem Text="text1" />
<asp:ListItem Text="text2" />
</asp:DropDownList>
<br />
<asp:DropDownList runat="server" ID="ddl2OnPanel1" AutoPostBack="true" OnSelectedIndexChanged="ddl2OnPanel1_SelectedIndexChanged">
<asp:ListItem Text="text3" />
<asp:ListItem Text="text4" />
</asp:DropDownList>
<br />
<asp:Label runat="server" ID="lblMessageOnPanel1" />
<br />
<asp:Button ID="Button1" Text="text" runat="server" />
<br />
On every post on Panel 1: <%:DateTime.Now %>
</ContentTemplate>
</asp:UpdatePanel>
<br />
<br />
<asp:UpdatePanel runat="server" ID="up2" UpdateMode="Conditional">
<ContentTemplate>
<asp:Calendar ID="calendarOnPanel2" runat="server" >
<DayHeaderStyle CssClass="dayheaderStyle" />
<NextPrevStyle />
<OtherMonthDayStyle BackColor="#ffffff" />
<SelectedDayStyle />
<TitleStyle CssClass="titleStyle" />
<TodayDayStyle BackColor="#ffffa0" ForeColor="#6699cc" />
<WeekendDayStyle />
<DayStyle CssClass="dayStyle" />
</asp:Calendar>
<br />
<asp:Label ID="lblMessageOnPanel2" runat="server" />
<br />
On every post On Panel 2: <%:DateTime.Now %>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddl1OnPanel1" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnableScriptGlobalization="true" CombineScripts="false" ScriptMode="Release">
</asp:ToolkitScriptManager>