【问题标题】:jqGrid: new data property in 3.7 -- is there a setData method?jqGrid:3.7 中的新数据属性——有 setData 方法吗?
【发布时间】:2010-07-18 22:10:55
【问题描述】:

我的应用程序一遍又一遍地填充 jqGrid,其中包含用户可能进行的许多不同查询的结果;查询采用以下形式:为文档包含单词“x”的所有文档提供标题、documentCategory、hits、documentType。用户可能会一个接一个地进行许多这样的(ajax)查询:发出查询。读取数据库返回的标题列表。做一些工作。再做一个这样的查询。以此类推。

我创建了一次网格,当 ajax 数据库调用返回一些数据时,网格首先被取消填充,然后重新填充,如下所示:

 $("#titles-table").jqGrid('clearGridData');
 .
 .
 .  // loop through the data returned by the ajax database call
      for (var i = 0 ...
      {
        row = ...
        $("#titles-table").jqGrid('addRowData',i, row); 
      }

但现在在 3.7 版中,网格有一个新的“数据”属性,据说比 addRowData 更快。演示此新 data 属性的示例显示了在实例化时填充的网格(如定义 colModel 等)。但是假设网格 已经存在 并且将通过 clearGridData 调用来取消填充,那么有没有办法设置网格的 data 属性来重新填充网格?类似于 clearGridData 的东西,像这样:

  $(#titles-table).jqGrid('setGridData', data);

我对填充网格的更快方法感兴趣。当我的网格有 75 行时,Firefox 会显示“脚本耗时过长”消息,但 Chrome、Opera 和 Safari 会立即通过这个数据量。

【问题讨论】:

  • 你解决过这个问题吗?我需要做类似的事情,动态加载我自己的数据,如果有的话,我对解决方案感兴趣。

标签: jqgrid populate


【解决方案1】:

根据jqGrid docs,这个选项可以在通过setGridParam创建网格后更改。例如:

$(#titles-table).jqGrid('setGridParam', data);

【讨论】:

  • 感谢贾斯汀,将我指向该页面。但是,我使用 setGridParam 方法没有成功。当以这种方式设置数据属性时,jqGrid 似乎假定它已经启动了一个 ajax 调用来获取数据,并且代码遇到了一个未定义的事件句柄。网格永远不会填充数据。
【解决方案2】:
$('#table').addJSONData(data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多