我有一个页面上有几个jqGrids,还有一些其他字段.我想自己做一个AJAX调用,它会返回一个JSON对象,该对象具有应该用于填充整个页面的数据.
所以,我想自己调用,填充"其他字段",然后从返回的主JSON对象中拉出几个集合,并"手动"填充每个jqGrids与这些集合.
我有这么多工作,但我不能让jqGrid停止尝试自己发出一个AJAX请求.难道有没有办法告诉jqGrid在初始化时不尝试AJAX调用?
我在这里发现了一个类似的问题:如何从最初加载数据中抑制jqgrid?
但我没有为海报解决问题的选择.
对我来说似乎很合理,有些人可能想要使用这个插件,而不会让表在初始化时尝试获取自己的数据.我在文档(wiki - options)中的某个地方错过了一个选项吗?
谢谢.
有一种简单的方法可以说jqGrid不会加载数据本身.您应该使用use datatype: 'local'作为jqGrid选项.此选项说,你打算自己一个功能填补了网格数据,如addRowData或addJSONData(见一个例子的jqGrid tableToGrid"选项"参数).您还可以在loadComplete回调内部的网格中填充数据,因为jqGrid也会调用此函数datatype: 'local'.
不要忘记,您作为参数提供的数据addJSONData将使用jsonReader和读取(解析)jsonmap.它为您提供了一个很好的方法,不会操纵从服务器收到的数据.而不是仅仅jsonmap为jqGrid 提供正确的数据映射就足够了.您可以在JQGrid中映射JSON数据中找到相对复杂的数据映射示例.
如果您考虑优化数据传输,请查看http://trirand.com/blog/jqgrid/jqgrid.html演示页面上的"数据映射"\"数据优化"部分.我们的想法是将表示行的数据结构替换为字符串数组.然后,没有列名称(结构的归档名称)将从服务器发送到客户端,从而压缩数据传输.通过这种优化,您可以像其他方式一样节省更多时间.不要忘记在Web服务器上打开数据压缩.这也可以大大减少数据传输的大小.
最后我可以建议查看我的讨论问题是否应该将jqGrid的用法addJSONData替换为setGridParam()和trigger('reloadGrid')的用法?我将addJSONData()函数的用法与trigger('reloadGrid')的用法进行比较.原因如果你想一次更新一个表,那么触发器('reloadGrid')会慢一点,就像你只进行一次ajax调用一样,但是使用trigger('reloadGrid')你的程序结构会更容易.如果比较两种情况下的总时间,那么数据传输可能不是您的瓶颈.所以可能的是,两种情况下的页面加载总时间几乎没有变化.最好的方法是在两种情况下弄乱时间,并决定你准备为简单的程序设计支付多少钱.
| 归档时间: |
|
| 查看次数: |
7074 次 |
| 最近记录: |