将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的数据网格。