我正在尝试修复使用ASP GridView的旧asp.net应用程序中的一些问题。有几个事件绑定到网格。比如排序,行点击等。我想在加载/重新加载完成后执行一些js函数(比如使用标题点击等排序后)。
我试过
排序后,网格重新加载都不会触发。
答案 0 :(得分:1)
服务器端事件总是会导致整个页面生命周期。但是如果混合中有UpdatePanel
,那么您可能会获得部分页面回发,这不会触发页面加载事件。请记住,无论如何都会发生整个页面生命周期。
如果要在处理某种服务器端事件后执行某些客户端代码,则需要一种方法在页面完全呈现后将一些信息传递给JS / jQuery。通常,这是通过使用一个或多个<asp:HiddenField>
控件来完成的。
通常我会将其ClientIDMode设置为static,以便在JS方面使生活更轻松。例如,如果你有这个:
<asp:HiddenField ID="hfSomeData" runat="server" ClientIDMode="Static"
Value="Something set after handling some gridview event"
然后你可以在javascript端执行此操作来访问值:
$("#hfSomeData").val();
以下代码将根据PostBackHandler
部分页面更新发出的jquery ready事件或来自endRequest
的调用执行UpdatePanel
// Handle Full Page postbacks
$(function () {
PostbackHandler(0);
});
// Handle Partial Page postbacks
// i.e. when Gridview embedded in an UpdatePanel
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function(sender, args){
PostbackHandler(1);
});
//PostBackType : 0 for Full Postback
// : 1 for Partial Postback
function PostbackHandler(PostBackType) {
var passed_in_data = $("#hfSomeData").val();
if (PostBackType === 0)
// do postback stuff
else
// do partial postback stuff
}