当用户选择一个单元格时,我有以下代码转到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的最佳位置在哪里?
答案 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
的情况不同。