这是我之前在 here 上提出的问题的后续。多亏了奥列格的回答,我现在可以正确地显示我的网格了。但是,现在我需要在引导程序菜单项上使用不同的URL刷新jqgrid中的数据。以下是我的代码:
$("#menuitem").click(function(e){ $("#grid").jqGrid('setGridParam', {url: '/getdata?id=1234&name=val.text'}); $('#grid').trigger("reloadGrid"); });
菜单选项是在我们从ajax请求中获得数据后动态添加的。当重新加载被触发时,网格似乎正在重新加载。但是,它似乎从旧的URL('/getdata')获取数据,而不是从具有不同参数集的新URL获取数据。我也尝试了 here 提到的解决方案,但它在我的情况下不起作用,因为我动态添加了菜单项。
任何帮助都是非常感谢的。
编辑:我查看了firebug上的页面请求。当我单击菜单项时,我看不到任何请求。我还添加了
$("#list").jqGrid('GridUnload');
添加到 this 问题答案中提到的单击处理程序函数。它为我清除了网格,但没有重新加载。所以我在这里添加了jqgrid的代码,然后它就可以工作了,jqgrid会显示新的数据。因此,我的更改代码如下所示:
$("#menuitem").click(function(e){ $("#list").jqGrid('GridUnload'); $("#grid").jqGrid({ url: '/getdata?id=1234&name=val.text'', datatype: "json", colNames: ['data'], colModel: [ {name: 'data', align: 'center'} jsonReader: { root: "logs", cell: "", id: function () { return function () { return $.jgrid.randId(); page: function() { return 1; }, total: function() { return 1; }, records: function(obj) { return obj.logs.length; } loadonce: true, viewrecords: true, autowidth: true, ignoreCase: true, height: "auto", rowNum: 999, autoencode: true, beforeProcessing: function (data) { var items = data.data.data.split("\n"), i, l, item; data.logs = []; for (i = 0, l = items.length; i < l; i++) { item = $.trim(items[i]); if (item.length > 0) { data.logs.push([item]);