2

我正在尝试在对 URL 的 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");

但是,它仍然加载第一页?很明显,它再次被覆盖。为什么?我怎样才能永久设置它。

4

1 回答 1

3

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

$('#GRID_ID').jqGrid('setGridParam', { postData: { page: 4} });
于 2013-03-19T18:10:53.050 回答