为什么不在异步回发上调用此函数

时间:2017-04-11 15:34:46

标签: javascript c# jquery asp.net gridview

我正在尝试为在我的页面上进行回发的内容创建加载屏幕,特别是从gridview的行单击中执行回发并导致整个页面加载。我想在页面上添加某种加载页面或加载片段。从googling / stackoverflowing我把它从其他帖子和资源中放在一起。

脚本

<script type="text/javascript">

    $(function () {

        // Get the instance of PageRequestManager.
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        // Add initializeRequest and endRequest
        prm.add_initializeRequest(prm_InitializeRequest);
        prm.add_endRequest(prm_EndRequest);

        console.log(prm);
        // Called when async postback begins
        function prm_InitializeRequest(sender, args) {
            console.log("init sender " + sender);
        }

        // Called when async postback ends
        function prm_EndRequest(sender, args) {
            console.log("end sender: " + sender);    
        }

    });

</script>

的GridView / UpdatePanel的

<asp:UpdatePanel ID="actAddPanel" runat="server" 
updatemode="Conditional" 
ChildrenAsTriggers="true">
  <ContentTemplate>
     <asp:GridView></asp:GridView>
   </ContentTemplate>
</asp:UpdatePanel>

问题

脚本应该在回发开始和结束时通知我,所以理论上prm_InitalizeRequest将允许我修改页面上的元素,以便在回发发生时创建自定义加载动画/详细信息并prm_EndRequest在回发结束时会告诉我,以便我知道何时结束自定义动画/细节。

我使用ChildrenAsTriggers="true"创建了gridview触发器的行,但是当我进行回发时,我没有看到我的console.log消息让我知道这些函数实际上已被调用。如何使这些功能起作用?

1 个答案:

答案 0 :(得分:0)

我发现为了让这些函数执行,它们需要由一个事件触发。在我的gridview中,我添加了Triggers,然后我的功能按预期工作。