gpt4 book ai didi

asp.net - 两个 UpdatePanels 并行工作,一个不更新

转载 作者:行者123 更新时间:2023-12-04 20:54:26 25 4
gpt4 key购买 nike

我有两个更新面板(让我们称它们为 A 和 B)。在 A 中,我有一个简单的复选框。 AutoPostback 设置为 true。当您选中(或取消选中)时,它将启用/禁用同一 UpdatePanel 中的简单下拉列表。

UpdatePanel B 中有一个长时间运行的进程。它会触发创建下拉列表的请求,该请求需要近 2 分钟的时间来构建。如果我加载页面并且不触摸任何内容,下拉列表将在大约 2 分钟后构建并完美呈现。但是,如果在那两分钟内我决定检查我的复选框(并导致面板 A 的部分回发),则更新面板 B 永远不会呈现。在调试时,我发现它正在成功完成检索,但实际面板从未刷新以显示控件。

我尝试在面板 B 上使用 UpdateMode = Conditional(以确保它不会被面板 A 干扰)并且它产生相同的结果。我已经验证 B.Update() 也被调用。

编辑

面板A:

<asp:UpdatePanel ID="upMailScrub" runat="server">
<ContentTemplate>
<asp:Button ID="btnAnalyzeLaunch" runat="server" onclick="btnAnalyzeLaunch_Click" Text="Analyze Launch" style="display: none" />
<table>
<tr>
<td><asp:CheckBox ID="cbxScrub" runat="server" Checked="true"
oncheckedchanged="cbxScrub_CheckedChanged" AutoPostBack="True" /></td><td><label for="cbxScrub">Scrub this campaign</label></td>
<td style="padding-left: 10px">
Vendor:&nbsp;&nbsp;<asp:DropDownList ID="ddlScrubVendor" runat="server">
<asp:ListItem Text="LexisNexis" Value="LexisNexis" />
</asp:DropDownList>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>

B组:
<asp:UpdatePanel ID="upDdlCampaigns" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnAnalyzeLaunch" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:HiddenField id="hidAction" runat="server" />
<asp:Panel ID="pnlPleaseWait" runat="server"><img src="style/images/PleaseWait.gif" />&nbsp;Please wait while the Five9 Campaigns are retrieved...</asp:Panel>
<asp:DropDownList ID="ddlCampaigns" Visible="false" runat="server" class="required"
AutoPostBack="True" OnSelectedIndexChanged="ddlCampaigns_SelectedIndexChanged" />
<asp:Button ID="btnRefreshDDL" runat="server" onclick="btnRefreshDDL_Click" style="display: none" />
</ContentTemplate>
</asp:UpdatePanel>

有什么建议?谢谢。

最佳答案

您对 UpdatePanel 的要求太多了 :)

UpdatePanel 无法以这种方式处理 2 个并行请求 .考虑进行一些 ajax 调用以获得结果。

为什么你可能会问,一个基本原因是每个页面只有一个 View 状态。 当您从 A 或 B、UpdatePanel 请求发送/获取数据时, View 状态必须更改为新的 View 状态。现在,当您从 A 询问结果时,在结束之前,您从 B 询问结果,您将获得 2 个不同的 View 状态,其中一个将失败,因为在中间时间发生了变化。

ViewState 不是唯一的想法,在每次更新面板中点击,页面回发所有输入到页面,A 和 B 输入以及页面内的所有其余内容 ,这也是个问题。例如,想象一下,您使用输入 A+B 触发 A UpdatePanel,然后在 A 结束之前,您使用相同的输入触发 B UpdatePanel。现在 A,等待 A+B 的结果,与 B 相同,但在中间时间,A 的 A+B 结果现在不同,因为 B 改变了它们 - 并且失败了。

关于asp.net - 两个 UpdatePanels 并行工作,一个不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com