【问题标题】:How to check and stop multiple postbacks for Updateprogress inside an updatepanel如何在更新面板中检查和停止 Updateprogress 的多个回发
【发布时间】:2012-06-14 06:33:19
【问题描述】:

我正在为我的网页中的更新面板使用更新进度控件。我为 updateprogress 指定了一个条件,即只有当它获得相应的回发元素时才应该加载。只有当只有一个回发元素时它才能正常工作。如何检查页面中的其他回发元素并启用 updateprogress 控件。 我的代码为

<style type="text/css">
        .Background
        {
            position: fixed; left: 0; top: 0; z-index: 10; width: 100%;height: 100%;
            filter: alpha(opacity=40);
        }
    </style>
    <script type="text/JavaScript" language="JavaScript">    
        function pageLoad() {    
            var manager = Sys.WebForms.PageRequestManager.getInstance();    
            manager.add_endRequest(endRequest);    
            manager.add_beginRequest(OnBeginRequest);    
        }    
        function OnBeginRequest(sender, args) {    
            var postBackElement = args.get_postBackElement();    
            if (postBackElement.id == 'Button1') {    
                $get('UpdateProgress1').style.display = "block";    
            }
                $get('ParentDiv').className = 'Background';    
        }    
        function endRequest(sender, args) {    
            $get('ParentDiv').className = '';    
        }  </script>

我的 aspx 代码为

 <asp:ScriptManager ID="ScriptManager1" runat="server" />
         <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
        <div id="ParentDiv">
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <td height="403">
                    <iframe id="IFOEvent" name="InIframe" scrolling="auto" runat="server"
                        width="75%" height="203" class=""></iframe>
                </td>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" />
            </Triggers>
        </asp:UpdatePanel>
        </div>
    <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
        <ProgressTemplate>
            <div id="IMGDIV" align="center">
                <img src="Images/loading.gif" alt="" /><br />          
                </div>
            </ProgressTemplate>
        </asp:UpdateProgress>

【问题讨论】:

    标签: javascript asp.net updatepanel updateprogress


    【解决方案1】:

    您有不止一种方法可以做到这一点。为什么不这样做,

    • 将一组 id 推送到数组

    • 在回发期间检查元素是否在数组中

    • 作为常规异步回发处理

      代码

    function pageLoad() { var manager = Sys.WebForms.PageRequestManager.getInstance(); manager.add_endRequest(endRequest); manager.add_beginRequest(OnBeginRequest); }

    function OnBeginRequest(sender, args) { var map = ["Button1", "Button2", "Button3"]; var postBackElement = args.get_postBackElement(); if (map.indexOf(postBackElement.id) !== -1) { $get('UpdateProgress1').style.display = "block"; } $get('ParentDiv').className = 'Background'; }

    【讨论】:

    • 是否需要在页面加载中提供这些?或者我可以在按钮点击中给它吗? var manager = Sys.WebForms.PageRequestManager.getInstance(); manager.add_endRequest(endRequest); manager.add_beginRequest(OnBeginRequest);
    • @kk1076 数组必须是全局变量(可在每个函数内部访问)。所以你需要将它附加到pageLoad函数中的window对象
    【解决方案2】:

    设置一个变量并改变它的值 end Request 方法举例

    var temp = 0;
    

    函数 endRequest(sender, args) {
    如果(温度 == 0) {
    $get('ParentDiv').className = '';
    温度++; } 别的 { 温度 = 0; } }

    你也可以使用隐藏文件来设置值。

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2012-12-14
      • 1970-01-01
      相关资源
      最近更新 更多