beforeRequest事件jqGrid:在调用url之前设置jqGrid页面

时间:2013-03-01 22:26:17

标签: events jqgrid

我正在尝试在GET请求之前在jqGrid中设置页面变量...

        jQuery("#frTable").jqGrid({                
            cmTemplate: { sortable: false },
            caption: '@TempData["POPNAME"]' + ' Population',
            datatype: 'json',                
            mtype: 'GET',
            url: '/Encounters/GetAjaxPagedGridData/',

我尝试过各种各样的事情,无论我尝试什么,我都无法让它发挥作用...... 我已经尝试了各种各样的东西,唯一有用的东西是订阅LoadComplete事件,就像这样......

            loadComplete: function() {
                if ((rowFromTemp != "") && (pageFromTemp != "")) {
                    setTimeout(function () {
                    $("#frTable").trigger("reloadGrid", [{page: pageFromTemp, rowNum: rowFromTemp}]); 
                    }, 50);
                }
            },

我遇到的唯一问题是它不断更新。不知道为什么会这样。我唯一想到的是我以某种方式循环使用我的超时功能......

我已尝试订阅其他几个请求,但其中每个请求似乎都失败了。我觉得最有希望的是beforeRequest事件。这就是我现在所拥有的......

            beforeRequest: function() {
                if ((rowFromTemp != "") && (pageFromTemp != "")) {
                    $("#frTable").setGridParam([{ page: pageFromTemp, rowNum: rowFromTemp }]);                        
                    }
            },

它并不关心我将变量设置为什么,它只是打开了第1页无关紧要。
现在,我在这里您可以将数据设置为“本地”,这意味着您必须重新加载网格才能获取任何数据。

但我希望在用户首次打开数据时加载数据。我正在尝试设置页面,以便在用户使用我的编辑屏幕编辑一行后,当他点击保存时,他将被带回到他刚刚打开的页面。不是第一页。如您所知,这对用户来说非常令人沮丧。

更新

好的......我在beforeRequest事件中发出警报,并在我的网格加载之前触发。在url部分中调用的操作中设置断点告诉我在实际发出请求之前调用了警报。这就是我所希望的。我只需要弄清楚如何正确设置页面变量。

更新2 好。我设置了变量,我的警报告诉我变量确实设置了......

            beforeRequest: function() {
                if ((rowFromTemp != "") && (pageFromTemp != "")) {
                    this.p.page = pageFromTemp;
                    alert("This is what the page is: " + this.p.page + ";  And this is what I want it to be: \n" + pageFromTemp + " How do I get it there \n");

然而,它仍然加载第一页?显然,它再次被覆盖。为什么?如何永久设置。

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,但我在BeforeRequest函数上做了这个:

$('#GRID_ID').jqGrid('setGridParam', { postData: { page: 4} });