asp.net – 两个并行工作的UpdatePanel,一个不更新
我有两个更新面板(让我们称之为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: <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" /> 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调用以获得结果. 为什么你可能会问,一个基本原因是每个页面只有一个viewstate.当您从A或B,UpdatePanel请求发送/获取数据时,视图状态必须更改为新的视图状态.现在,当你问A的结果时,在你结束之前,你会问B的结果,你会得到2个不同的视图状态,其中一个会失败,因为在中间时间有变化. ViewState不是唯一的想法,在每个更新面板中点击,页面回发所有输入后发布到页面,A和B输入以及页面内的所有其余部分,这也是一个问题.例如,对此进行成像,使用输入A B触发A UpdatePanel,然后在A结束之前,使用相同的输入触发B UpdatePanel.现在A,等待来自A B的结果,相同和B,但是在中间时间A的A B结果现在是不同的,因为B已经改变它们 – 并且失败了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 从ASP.net Web服务返回大量数据时有哪些好的做法?
- asp.net页面如何知道哪个按钮触发了回发?
- asp.net-mvc – Mvc 3 Razor:使用部分部分视图?
- [ASP.NET MVC]如何定制Numeric属性/字段验证消息
- asp.net-mvc – asp.net mvc多语言urls /路由
- 从asp.net获取验证AD用户objectGuid
- asp.net – Razor Host Factory错误
- ASP.NET MVC 3数据注释大于下载日期时间和int
- ASP.Net Gridview,如何激活基于ID的编辑模式(DataKey)
- asp.net-mvc – 在Action Filter中不正确地存储实例状态