可以触发(“reloadGrid”)在jqGrid中的“loadonce: true”时工作
Can trigger(“reloadGrid”) works when 'loadonce: true' in jqGrid?
我正在使用的jqGrid源文件在顶部显示其版本为jqGrid 4.4.0
,日期为Date 2012-06-14
在这个维基页面中,它说trigger(“reloadGrid”)
,
Reloads the grid with the current settings. This means that a new request is send to the server if datatype is xml or json. This method should be applied to an already-constructed grid. Pay attention that this method does not change HEADER information, that means that any changes to colModel would not be affected. You should use gridUnload to reload new configuration with different colModel. IT'S WORK ONLY IF loadonce: false !!!
是的,它说"只有当加载一次:错误!!时才有效">
这个 SO 答案暗示了一些黑客。它说,
If you use loadonce:true jqGrid change the datatype parameters to 'local' after the first load of data from the grid. All next grid reloading (sorting, paging, filtering) works local. If you want refresh the grid data from the server one more time you should set datatype to its original value ('json' or 'xml').
所以这个答案实际上解决了我面临的一个问题。我有一个 jqGrid,它有loadonce:true
。(在这里我关心排序,它工作得很好(。但后来我不得不稍微更改代码以使用新的服务器数据重新加载 jqGrid。(用户可以更改一些细节并刷新表,以便 jqGrid 应该从服务器重新加载新获取的数据(。不幸的是,直到我loadonce:true
更改为loadonce:false
,这才起作用。
我称重新加载为这样,
$("#tableGrid").setGridParam({url:'myUrl'}).trigger('reloadGrid');
现在重新加载很好。但是排序消失了:(
然后我看到那个 SO 答案并将其更改为这样,
我在初始化网格时设置了loadonce:true
。并调用重新加载,如下所示。
$("#tableGrid").setGridParam({url:'myUrl',datatype:'xml'}).trigger('reloadGrid');
之后,所有排序都很好,用户也可以重新加载网格。
这种方法正确吗?我认为它解决了问题,但是是吗? 因为文档说loadonce:true
时无法重新加载?
我强烈建议您将从 4.4.0 版本使用的 jqGrid 升级到免费的 jqGrid 4.12.1。Free jqGrid 是我从 2014 年底开始开发的 jqGrid 的分支。有关其他信息,请参阅答案的更新部分的帖子和链接。你应该明白,jqGrid 4.4.0 真的是复古版本。它是在jQuery 1.4.3版本发布时发布的。当时IE9是Internet Explorer的最新版本,但IE6-IE8是最常用的版本。现在我们还有另一个时间进行Web开发。
重要的是要了解loadonce: true
什么,.trigger('reloadGrid')
什么。
jqGrid 支持在 JavaScript 对象内部本地保存数据。可以使用datatype: "local"
,使用data
参数提供数据,然后使用本地分页,对数据进行排序和过滤。您可以更改页面大小 ( rowNum
(, 页码 ( page
( 和排序参数 ( sortname
, sortorder
( 的值,并通过触发事件使用新选项重新加载当前显示reloadGrid
页面。jqGrid 将对数据进行排序并显示请求的页面。因此,重要的是要了解.trigger('reloadGrid')
也适用于本地数据。
如果将datatype:'xml'
与loadonce: true
一起使用,则服务器必须返回所有数据。数据必须按请求的sortname
、sortorder
选项(参数sidx
和对服务器请求的sord
(进行排序。因此,jqGrid 用所有数据填充内部data
参数。jqGrid 显示返回数据的第一页(基于页面大小rowNum
和页码page
(。最后(在处理loadComplete
回调之后(jqGrid 将 datatype
的原始值(在您的情况下"xml"
(更改为 datatype: "local"
。现在,用户可以使用本地分页、排序和过滤数据,而无需与服务器进行任何通信。在每次排序、分页和过滤时,jqGrid 都使用reloadGrid
事件来显示相应的数据页。
如果您需要从服务器重新加载数据,则只需恢复datatype
参数的原始值并触发reloadGrid
。例如
$("#tableGrid").setGridParam({datatype:'xml'}).trigger('reloadGrid');
如果您的服务器已正确实现,则用户将看到请求的数据页面,并且所有本地数据都将刷新。显示页面后,datatype
将更改回datatype:'local'
。
如果您使用当前免费的 jqGrid,那么您可以使用以下选项
loadonce: true,
forceClientSorting: true,
navOptions: { reloadGridOptions: { fromServer: true } }
该选项forceClientSorting: true
从服务器中删除了提供排序数据的要求。免费的jqGrid可以对服务器返回的数据进行排序。如果您使用navGrid
则它会添加"刷新"/"重新加载"按钮。该选项navOptions: { reloadGridOptions: { fromServer: true } }
更改按钮的行为,以便在用户单击按钮时从服务器重新加载数据。无需手动更改datatype
。
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 可以't让我的if语句处理js中的html表单输入
- 引用对象中的通用值
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 不能从angular2中的子组件指定父组件中的数组
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如何更改bigquery API中的计费层选项
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- 我如何找到一个句子中的所有空格并替换忽略它们
- zurb基础中的固定宽度立柱3
- 可以触发(“reloadGrid”)在jqGrid中的“loadonce: true”时工作