jqgrid ajax reload,jquery – 应该替换使用的addJSONData jqGrid到setGridParam()和trigger(‘reloadGrid’)的用法?...

我最近写了一个问题“

jqGrid display default “loading” message when updating a table / on custom update”的答案。在写答案时我想:为什么他使用addJSONData()函数刷新网格中的数据,而不是相对于setGridParam()更改URL和相对于触发器(‘reloadGrid’)刷新jqGrid数据?在开始,我想推荐使用’reloadGrid’,但是在考虑了这一点后,我明白我不太确定最好的方法是什么。至少,我不能在两句话中解释为什么我喜欢第二种方式。所以我决定这可能是一个有趣的讨论主题。

所以,准确来说:我们有一个典型的情况。我们有一个网页,至少有一个jqGrid和一些其他控件,如组合框(选择),复选框等,让用户可能改变显示在jqGrid信息的范围。通常我们定义一些事件处理程序,如jQuery(“#selector”)。change(myRefresh).keyup(myKeyRefresh)

并且我们需要根据用户的选择重新加载jqGrid容器。

在读取和分析来自附加用户输入的信息之后,我们可以以至少两种方式刷新jqGrid容器:

>调用$ .ajax()手册,然后在$ .ajax的成功或完整句柄调用jQuery.parseJSON()(或eval),然后调用jqGrid的addJSONData函数。我在stackoverflow.com上发现了很多使用addJSONData的例子。

>根据用户输入更新jqGrid的URL,将当前页数重置为1,并可选择更改网格的标题。所有这些都可以根据setGridParam()和可选的setCaption()jqGrid方法来完成。最后调用网格的触发器(‘reloadGrid’)函数。要构造的url,我通常使用jQuery.param函数的方式来确保,我有所有的url参数打包正确的encodeURIComponent。

我想让我们讨论这两种方式的优点和缺点。我目前使用第二种方式,所以我将从这个优点开始。

可以说:我调用现有的Web服务,将接收到的数据转换为jqGrid格式并调用addJSONData。这就是为什么我使用addJSONData方法!

好的,我会选择另一种方式。 jqGrid可以直接在Web服务上调用并在网格内填充结果。有很多jqGrid选项,它允许您自定义此过程。

首先,可以删除或重命名相对于jqGrid的prmNames选项发送到服务器的任何标准参数,或者添加关于postData选项的任何其他参数(见http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options)。可以在jqGrid通过定义serializeGridData()函数(jqGrid的另一个选项)做出相应的$ .ajax请求之前立即修改所有构造的参数。除此之外,可以通过设置jqGrid的ajaxGridOptions选项来更改每个$ .ajax参数。我使用ajaxGridOptions:{contentType:“application / json”}例如作为$ .jgrid.defaults的一般设置。

ajaxGridOptions选项非常强大。对于ajaxGridOptions选项,可以重新定义通过jqGrid发送的$ .ajax请求的任何参数,如error,complete和beforeSend事件。我看到可能有趣的是定义dataFilter事件,以便能够对从服务器返回的行数据进行任何修改。

使用触发器(‘reloadGrid’)方式的另一个参数是在AJAX请求处理期间阻塞jqGrid。大多数情况下,我使用参数loadui:’block’阻止jqGrid在JSON请求发送到服务器。相对于jQuery blockUI插件http://malsup.com/jquery/block/,可以阻止网页的更多部分作为网格。要做到这一点,可以调用:

jQuery('#main').block({ message: '

Die Daten werden vom Server geladen...

' });

在调用loadComplete和loadError函数内的触发器(‘reloadGrid’)方法和jQuery(‘#main’)。unblock()之前。在这种情况下,loadui选项可以设置为“disable”。

我的最后一句话:主要是我用于创建jqGrid数据类型设置为’local’而不是’json’,我会调用一些控件(组合框)的触发器(‘change’)函数,如:

jQuery(“#selector”)。change(myRefresh).keyup(myKeyRefresh).trigger(‘change’)。

因此,我只在更改句柄内部的一个位置构造jqGrid的url参数,并在上述setGridParam()内将数据类型更改为“json”。

所以我不明白为什么函数addJSONData()应该被使用。

有人可以使用addJSONData()函数向我解释其使用的优点吗?

公平地说,我可以添加addJSONData(),它存在于旧版本的jqGrid中,因为它具有我在这里描述的大部分功能。应该将jqGrid的addJSONData的用法替换为setGridParam()和trigger(‘reloadGrid’)的用法吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值