将loadonce设置为true的jqgrid reloadGrid

时间:2011-03-22 20:50:34

标签: jquery jqgrid

我在一个页面中使用两个jqgrids。第二个网格我使用loadonce: true,因为我需要在第二个网格中进行列排序。我需要在服务器回发后重新加载两个网格。 (需要在第二个网格中显示更新的值)。第一个网格重新加载正常,因为它不会使用loadonce属性。我的问题是我们可以同时使用loadonce属性和reloadGrid吗? (通过动态设置loadonce属性到网格)或者在这种情况下我是否需要进行服务器端排序?请指教。提前谢谢。

4 个答案:

答案 0 :(得分:68)

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

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

更新 Free jqGrid支持fromServer: true reloadGrid选项,从第一个版本开始(从版本4.8开始)。所以可以使用像

这样的代码
$("#list").trigger("reloadGrid", { fromServer: true, page: 1 });

做同上。主要优点:此类代码适用于任何初始值datatype"json""jsonp""xml"等等。免费jqGrid会将datatype的原始值保存在内部dataTypeOrg内,然后再将其更改为"local"

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

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

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

答案 1 :(得分:0)

尼斯正在尝试最后一周,解决方案是完美的 使用

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

重新加载数据

答案 2 :(得分:0)

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

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

在调用该行之后,我尝试调用加载了我的JSON数据的代码并使用它填充jqGrid,但它没有刷新网格中的行。

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

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

也许我只是不走运。

顺便说一下,当我有机会的时候,我会记录我是如何写一个通用的JavaScript函数来为任何jqGrid添加两个按钮,一个用于刷新(loadonce)数据,另一个按钮用于将jqGrid数据导出到真实的Excel文件,使用我的库:

Export jqGrid to an Excel file

我喜欢可重复使用的代码!

答案 3 :(得分:0)

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

将删除结构,然后您的代码可以使用下一次服务器回调中的数据重建网格。