将loadonce设置为true的jqgrid reloadGrid

我在一个页面中使用了两个jqgrid。 第二个网格我使用loadonce: true因为我需要列sorting在第二个网格。 我需要在服务器回发后重新加载两个网格。 (需要在第二个网格中显示更新的值)。 第一个网格重新加载罚款,因为它不会使用loadonce属性。 我的问题是我们可以使用loadonce属性和reloadGrid在一起? (通过dynamic设置loadonce属性到网格)或者我需要在这种情况下去服务器端sorting? 请指教。 提前致谢。

如果使用loadonce:true在网格中第一次加载数据后, loadonce:true jqGrid将datatype参数更改为“local”。 所有下一个网格重新加载(sorting,分页,过滤)在本地工作。 如果你想再一次从服务器刷新网格数据,你应该将datatype设置为原始值('json'或'xml')。 例如:

 $("#list").setGridParam({datatype:'json', page:1}).trigger('reloadGrid'); 

更新: 免费jqGrid支持从reloadGrid从第一个版本(从版本4.8开始) reloadGrid fromServer: true选项。 所以可以使用这样的代码

 $("#list").trigger("reloadGrid", { fromServer: true, page: 1 }); 

做同上。 主要优点:这样的代码可以和datatype"json""jsonp""xml"等等)的初始值一起工作。 免费的jqGrid在将datatype原始值保存在内部dataTypeOrg之前,将其更改为"local"

免费jqGrid的另一个有用的选项是navGrid的参数navGrid ,它允许指定reloadGrid默认选项。 因此可以使用例如

 loadonce: true, navOptions: { reloadGridOptions: { fromServer: true } } 

jqGrid的选项,它另外为navGrid设置了默认值。 结果点击导航栏的“重新加载”button将从服务器重新加载网格,而不是本地重新加载。

尼斯是最后一个星期尝试,解决scheme是完美的使用

 jQuery("#datalist").jqGrid().setGridParam( { datatype:'xml', page:1, url : '<%=request.getContextPath()%>/PreviewReport?cmd=1&fromdate='+vfromDate+'&todate='+vtoDate+'&status='+vstatus+'&keyword='+vkeyword+'&mdn='+vmdn+'&filetype='+vfiletype } ).trigger("reloadGrid"); 

使用loadonce:false重新加载数据

只是说,对我来说,下面的行是不够的,刷新我的loadonce:true的数据loadonce:true jqGrid:

 $("#MikesGrid").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid'); 

调用该行后,我试图调用我的代码加载我的JSON数据和填充jqGrid ,但它没有刷新我的网格中的行。

我的解决scheme是强制卸载 jqGrid, 然后调用我的函数重新创build它。

 $("#MikesGrid").jqGrid('GridUnload'); 

也许我只是不幸。

顺便说一句,当我有机会,我会logging如何编写一个通用的JavaScript函数来添加两个button到任何jqGrid,刷新(加载)数据,第二个button导出jqGrid数据到一个真正的Excel文件,使用我的图书馆:

将jqGrid导出到Excel文件

我喜欢重复使用的代码!

 $("#shoppingCatalog").jqGrid('GridUnload'); 

将删除结构,然后您的代码可以重build与下一个服务器callback的数据网格。