我有selet列表,我将id传递给jqGrid函数,我想根据用户选择的id加载不同的数据集。 所以我将值传递给选择列表的更改事件。
RelaodGrid($(this).val());
然后我有像这样的RelaodGridfunction。
function RelaodGrid(Id) {
jQuery("#list").jqGrid({
url: '/Home/GridData',
datatype: 'json',
mtype: 'POST',
postData:{Id:Id},
colNames: ['Id', 'Value1', 'Value2'],
colModel: [
{ name: 'Id', index: 'Id', width: 50, align: 'left' },
{ name: 'Value1', index: 'Value1', width: 100, align: 'left' },
{ name: 'Value2', index: 'Value2', width: 100, align: 'left'}],
pager: jQuery('#pager'),
viewrecords: true,
caption: 'Summary'
}).trigger("reloadGrid");
};
这会重新加载网格但返回相同的值。第一次获取正确的Id值,但在每次重新加载之后,它会获取第一个选定的id值,尽管所选列表正确返回值。
如何解决这个问题?我哪里出错? 感谢。
答案 0 :(得分:1)
首先,您应该只初始化一次jqGrid。一个人通过电话jQuery("#list").jqGrid({...});
执行此操作。
对你的主要问题。它可以很容易地解决。您可以在the old answer中找到有关此方法的最多信息。您应该做的只是将id
参数的postData
属性定义为函数:
postData:{Id:function() { return $("#mySelect").val(); }
而不是postData:{Id:Id}
。现在,网格将调用该函数并在每次网格重新加载时加载所选项目的当前值。你需要的只是放置
jQuery("#list").trigger("reloadGrid",[{page:1}])
在select的'change'
事件处理程序中。