我在一个页面中使用两个jqgrid。第二个网格我使用的是loadonce:true,因为我需要在第二个网格中进行列排序。服务器发回后,我需要重新加载两个网格。 (需要在第二个网格中显示更新的值)。第一个网格重新加载,因为它不会使用loadonce属性。我的问题是可以一起使用loadonce属性和reloadGrid吗? (通过将loadonce属性动态地设置到网格),或者我需要在这种情况下去服务器端排序?请指教。提前致谢。
解决方法
如果使用loadonce:true jqGrid将数据类型参数从网格的第一次加载数据后更改为“local”。所有下一个网格重新加载(排序,分页,过滤)都是本地的。如果要再次从服务器刷新网格数据,您应该将数据类型设置为原始值(‘json’或’xml’)。例如:
$("#list").setGridParam({datatype:'json',page:1}).trigger('reloadGrid');
UPDATED:Free jqGrid支持fromServer:从第一个版本开始的reloadGrid的true选项(从版本4.8开始)。所以可以使用像这样的代码
$("#list").trigger("reloadGrid",{ fromServer: true,page: 1 });
做同样的上述。主要优点:这样的代码可以处理任何初始值的数据类型(“json”,“jsonp”,“xml”等等)。免费jqGrid将数据类型的原始值保存在内部dataTypeOrg中,然后再将其更改为“local”。
免费jqGrid的另一个有用选项是navGrid的参数reloadGridOptions,它允许指定reloadGrid的默认选项。因此可以使用例如
loadonce: true,navOptions: { reloadGridOptions: { fromServer: true } }
jqGrid的选项,其另外为navGrid设置默认值。因此,点击导航栏上的“重新加载”按钮将从服务器重新加载网格,而不是本地重新加载。