将客户端上的数据添加到Jqgrid

时间:2012-04-27 16:44:37

标签: jquery jquery-plugins jqgrid jqgrid-asp.net

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

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

是否有任何替代方法将数据绑定到jqgrid,例如,只需将JsonString作为数据源提供,它将更快地绑定它或任何其他建议。

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

请任何帮助! 提前致谢, 阿拉

2 个答案:

答案 0 :(得分:3)

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

请在此处查看:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options

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

你只需要输入选项:

data: my_data

my_data是信息数组。

答案 1 :(得分: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将其转换为JSON字符串。您还可以使用与datatype: 'json'所知的格式相同的格式jsonReader

data参数(在datatype: 'local'}和datastr参数的情况下(在datatype: 'jsonstring'的情况下)插入数据的主要区别在于输入数据将是如果使用data参数,则按jqGrid排序,并且在datastr参数的情况下将包含未排序。