Jquery 排序或分页ASP.net MVC Webgrid时显示Ajax加载指示器

Jquery 排序或分页ASP.net MVC Webgrid时显示Ajax加载指示器,jquery,asp.net,ajax,asp.net-mvc,webgrid,Jquery,Asp.net,Ajax,Asp.net Mvc,Webgrid,我可以轻松地连接webgrid,并使用默认设置向其中添加ajax。但我一直在努力弄清楚的一件事是,当网格通过ajax进行排序或分页时,如何添加加载指示器 有一个内置的回调函数,可以很好地关闭ajax加载指示器,但是如何轻松地打开它呢 下面是我目前为webgrid编写的代码 @{ var grid = new WebGrid(rowsPerPage: Model.CountPerPage, ajaxUpdateContainerId: "GridArea"); grid.Bind(

我可以轻松地连接webgrid,并使用默认设置向其中添加ajax。但我一直在努力弄清楚的一件事是,当网格通过ajax进行排序或分页时,如何添加加载指示器

有一个内置的回调函数,可以很好地关闭ajax加载指示器,但是如何轻松地打开它呢

下面是我目前为webgrid编写的代码

@{
    var grid = new WebGrid(rowsPerPage: Model.CountPerPage, ajaxUpdateContainerId: "GridArea");
    grid.Bind(Model.Users,
              autoSortAndPage: false,
              rowCount: Model.TotalCount
            );
    grid.Pager(WebGridPagerModes.All);
}
<div id="GridArea">
    @grid.GetHtml(htmlAttributes: new {id ="UserGrid"},
        columns: new [] {
        grid.Column("ID", canSort: false),
        grid.Column("FirstName"),
        grid.Column("LastName"),
        grid.Column("Email"),
        grid.Column("FullName", canSort: false)
        }
    )
</div>
@{
var grid=new WebGrid(rowsPerPage:Model.CountPerPage,ajaxUpdateContainerId:“GridArea”);
grid.Bind(Model.Users,
autoSortAndPage:false,
rowCount:Model.TotalCount
);
Pager(WebGridPagerModes.All);
}
@GetHtml(htmlAttributes:new{id=“UserGrid”},
列:新[]{
grid.Column(“ID”,canSort:false),
网格栏(“名字”),
grid.Column(“LastName”),
表格栏(“电子邮件”),
grid.Column(“全名”,canSort:false)
}
)
我试过使用下面的方法,但都不起作用

<script>
    $(function () {
        $("#UserGrid").live("ajaxStart", function () {
            alert("start");
        });
    });
</script>

$(函数(){
$(“#UserGrid”).live(“ajaxStart”,函数(){
警报(“启动”);
});
});
这是第一次工作,但在网格进行第一次ajax刷新后就无法工作了

<script>
    $(function () {
        $('#UserGrid').ajaxStart(function () {
            alert("start");
        });
    });
</script>

$(函数(){
$('#UserGrid').ajaxStart(函数(){
警报(“启动”);
});
});
这应该行得通

$(document).ajaxStart(function(){
     //Show your progressbar here
}).ajaxStop(function(){
     //Hide your progressbar here
});

第二种方法不起作用,因为在第一个ajax响应之后,将重新创建DOM,并且.ajaxStart事件绑定将丢失。将它与全局文档对象绑定在一起,它将始终存在。

是的,上面的答案应该对您有所帮助。基本上有一个jQueryAPI,它将处理从客户端到服务器的任何ajax请求。因此,当您执行任何ajax操作时,它将调用触发器函数。
您可以将自定义css/图像或一些可以调用的函数作为ajax操作的指示符。

如果我想要页面的其他ajax驱动部分,并且需要直接将调用与Webgrid区分开来,我该如何实现这一点?每次Webgrid的DOM被ajax替换时,您都需要重新绑定Webgrid的ajax事件处理程序呼叫因此,无论您做什么,您都需要一些全局ajax处理程序,以便可以重新绑定所有这些处理程序。如果要区分调用,可以使用隐藏字段跟踪发起ajax调用的控件。如果需要页面的其他ajax驱动部分,并且需要直接将调用与Webgrid区分开来,如何实现这一点?