1

我正在使用 Jqgrid 显示一些数据,使用 DataType 作为本地,我不想回发到服务器并返回带有要绑定的数据的 jsonString。我将 Json 字符串传递给客户端,并使用 addRowData 将数据一一添加。如果由于我在每个单元格中拥有的信息而导致数据数量很大,那么用户似乎需要花费大量时间。

   for (var i = 0; i < gridData.length; i++)
       jQuery("#jqgInventory").jqGrid('addRowData', i + 1, JSON.parse(gridData[i]));

有没有其他方法可以将数据绑定到 jqgrid,例如只需将 JsonString 作为数据源,它会更快地绑定它或任何其他建议。

注意:使用 DataType 作为 Json 并设置 postUrl 会比上述方法更快。

请帮忙!在此先感谢,阿拉

4

2 回答 2

3

这句话直接来自jqGrid文档:“一个存储传递给网格的本地数据的数组。你可以直接指向这个变量,以防你想加载一个数组数据。它可以代替addRowData方法,它在相对大的时候很慢数据”。这正是你所说的。

在这里看到它:http ://www.trirand.com/jqgridwiki/doku.php?id=wiki:options

这是您的工作示例:http: //jsfiddle.net/yNw3C/649/

您只需输入以下选项:

data: my_data

my_data信息数组在哪里。

于 2012-04-27T16:50:09.800 回答
0

我同意 Jeffery_The_Wind 的另一个回答。他不仅写了他推荐的选项的名称:data参数。重要的是要添加一个应该使用gridview: true选项并且不要使用afterInsertRow回调。

供理解:使用addRowData是填充网格最慢、最无效的方式。最大的问题是,如果您在页面上插入元素或更改元素,则至少所有现有元素的位置必须由 Web 浏览器重新计算。您放置在页面上的元素越多,在下一个页面上插入的速度就越慢。

一种主要通过以下两种方式解决问题:

  • 一种用于DocumentFragment准备 DOM 元素的分离层次结构,然后将片段放在页面上的一个操作中。
  • 一种将所有或大部分更改的内容创建为代表 HTML 片段的字符串,并使用innerHTML属性将许多元素放在页面上的一个操作中。

jqGrid 使用第二种方法。使用gridview: true具有行为很重要。因此,填充本地网格的推荐方法是:

  • 数据的使用datatype: 'local'data参数。输入参数值的标准格式data是包含行项目的数组。每个项目都具有相同的属性,例如 的name属性值colModel。此外,每个项目都应该具有id定义“rowid”的属性 -<tr>网格元素(行)的 id。如果您有其他格式的输入数据,则必须使用描述数据格式的对应localReader参数。
  • 指定输入数据的datatype: 'jsonstring'和参数的用法。datastr参数的值datastr可以是 JSON 字符串,也可以是内容相同的 JavaScript 对象。因此,如果您将数据作为对象,则无需使用JSON.stringify. 您还可以使用与您可能知道的相同格式的jsonReaderdatatype: 'json'

data参数(在 的情况下)和datatype: 'local'参数datastr(在datatype: 'jsonstring'datadatastr

于 2012-04-27T17:20:21.907 回答