重新加载ASP gridview事件

时间:2015-02-16 12:46:55

标签: javascript jquery asp.net gridview reload

我正在尝试修复使用ASP GridView的旧asp.net应用程序中的一些问题。有几个事件绑定到网格。比如排序,行点击等。我想在加载/重新加载完成后执行一些js函数(比如使用标题点击等排序后)。

我试过

  1. JQuery的就绪功能,仅在页面加载时触发。
  2. 在网格旁边放置一个脚本块
  3. 在grid_sort中放置RegisterStartupScript(发生DataBind的地方)
  4. 排序后,网格重新加载都不会触发。

1 个答案:

答案 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    
  }