首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个UpdatePanels并行工作,一个不更新

两个UpdatePanels并行工作,一个不更新
EN

Stack Overflow用户
提问于 2011-06-02 13:05:35
回答 1查看 2.6K关注 0票数 5

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

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

我曾尝试使用UpdateMode =条件条件的面板B(以确保它不会被面板A干扰),它产生同样的结果。我已经验证了B.Update()也被调用了。

编辑

A小组:

代码语言:javascript
复制
<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小组:

代码语言:javascript
复制
<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>

有什么建议吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-02 13:23:19

你对的要求太高了,UpdatePanel :)

UpdatePanel不能以的方式处理2个并行请求。考虑进行一些ajax调用以获得结果。

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

ViewState不是唯一的想法,在每次更新面板单击,页面张贴回所有输入到页面,同时A和B输入和页面内的所有其他,这也是一个问题。例如,使用输入UpdatePanel触发A A+B,然后在A结束之前用相同的输入触发B UpdatePanel。现在,A,等待来自A+B的结果,相同和B,但是在中间阶段,来自A的A+B结果现在是不同的,因为B已经改变了它们,并且失败了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6214886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档