gpt4 book ai didi

jquery - 单击菜单项刷新 jqgrid,从不同的 URL 获取数据

转载 作者:行者123 更新时间:2023-12-01 08:09:56 25 4
gpt4 key购买 nike

这是我之前发布的问题 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]);
}
}
}
}).jqGrid('filterToolbar', {stringResult: true, searchOnEnter: false, defaultSearch: "cn"});

});

有没有更好的方法来做到这一点。对于它的用途来说,它看起来太笨重了。有没有办法让重新加载网格工作?我猜这是内部发生的事情,但当您使用插件时,代码似乎太多了。

谢谢

阿莎

最佳答案

首先,您需要修复代码中的语法错误(如果错误不仅存在于问题的文本中):

url: '/getdata?id=1234&name=val.text'',

必须替换为

url: '/getdata?id=1234&name=val.text',

由于您使用loadonce: true而存在的主要问题如果您不想或不能在服务器端实现数据分页和过滤并且您希望 jqGrid 为您完成此操作,那么这是非常实用的。你应该明白jqGrid改变原来的datatype来自"json""local"如果使用loadonce: true 。仅由于这些更改,刷新网格内容的所有下一个请求(分页、过滤、排序...)都将在本地实现,而不向服务器发出任何请求。如果需要重新加载网格,则需要重置 datatype 的值至"json"在重新加载网格之前。 GridUnload的使用以下情况不需要:

$("#grid").jqGrid('setGridParam', {
url: '/getdata?id=1234&name=val.text',
datatype: "json"
}).trigger("reloadGrid");

顺便说一句,你需要设置url仅当您需要更改时才使用该参数。如果您只想使用与之前相同的 URL 重新加载内容,则只需重置 datatype: "json" .

关于jquery - 单击菜单项刷新 jqgrid,从不同的 URL 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269074/

25 4 0