网格的jqgrid设置页面

时间:2013-01-31 15:13:21

标签: jqgrid

当用户选择一个单元格时,我有以下代码转到window.location

                 beforeSelectRow: function (rowid, e) {
                 var $td = $(e.target).closest("td"),
                 iCol = $.jgrid.getCellIndex($td[0]);
                 if (this.p.colModel[iCol].name === 'FlSaved') {
                 var pagenum = $('#reportList').getGridParam('page');
                 var rownum = 200;
                     alert(pagenum);
                     alert(rownum);
                 window.location = "/Plt/FileUpload/" + '?id=' + encodeURIComponent(rowid) + '&pagenum=' + pagenum;
                 }

请注意我是如何传递pagenum的。我传递页码的原因是因为当用户完成他们需要的内容时 要在window.location做,我需要用户返回他们所在的网格页面。

要做到这一点,我正在执行loadComplete,其中我设置了页面的值,但似乎没有工作。

      loadComplete: function (data) {

      if ('@TempData["pageNum"]') {

         $("#rpList").trigger("reloadGrid",[{page:pagenum}]);
} 

触发reloadGrid的最佳位置在哪里?

1 个答案:

答案 0 :(得分:1)

我不清楚何时设置'@TempData["pageNum"]',何时清除以及代码是否将保留在Web浏览器的缓存中。如果我们忘记了这些问题,我会对您的代码进行一次重要评论:如果您在.trigger("reloadGrid", ...)内使用loadComplete,则应在trigger内调用setTimeout。在开始由.trigger("reloadGrid", ...)初始化的下一个加载之前,它将允许处理直到结束网格的当前加载。所以代码可以是以下内容:

loadComplete: function (data) {
    ...
    if (/*some condition*/) {
        setTimeout(function () {
            $(this).trigger("reloadGrid",[{page: pagenum}]);
        }, 50);
    }
    ...
}

事件使用0代替50与使用.trigger("reloadGrid",...)而不使用setTimeout的情况不同。