2012-07-24 50 views
0

我正在使用jqGrid和LOAD ONCE,然后在客户端进行分页。当我添加过滤器工具栏时,在应用任何类型的过滤器后分页变得非常缓慢。通过过滤器工具栏应用过滤器后,JQGrid分页非常缓慢

$(gridElement).jqGrid({ 
     postData: post, 
     loadComplete: function (data) { 
      onLoadComplete(data); 
     }, 
     gridComplete: function() { 
      onGridComplete(); 
     }, 
     datatype: function (pdata) { 
      dataSource(pdata); 
     }, 
     colNames: columnNames, 
     colModel: columnModel, 
     rowNum: 10, 
     rowList: [10, 20, 30], 
     viewrecords: true, 
     pagination: true, 
     pager: pagerElement, 
     loadonce: true, 
     sortorder: "desc", 
     sortname: 'id', 
     cellEdit: false, 
     search: true, 
     gridview: true, 
     //rownumbers: true 
    }); 


    $("#jqGrid").jqGrid('filterToolbar',{ 
     stringResult : true, 
     searchOnEnter : false }); 

任何想法为什么会发生这种情况?在任何常见事件触发(如onPaging,onGridComplete等)之前,单击分页按钮时有延迟。

请注意,一旦网格完成,datatype属性设置为'local'。

我的猜测是,它试图过滤每次你的网页(或它只能一次过滤一页?不知道)。但是可以禁用吗?

谢谢。

+0

你有这样的活生生的例子吗? – 2012-07-27 19:51:18

+1

问题的根源可能是'onLoadComplete'和'onGridComplete'功能。为什么你需要这两个函数而不是'onLoadComplete'?为什么使用'datatype'作为函数?此外,您可以像'columnModel'一样使用发布的colModel。一个人需要了解你能做些什么来帮助你。你能否在你的问题中包含更多的细节(包含代码)?最好的将是演示再现你的问题, – Oleg 2012-07-30 10:16:49

+0

我认为什么Enzino发布可能是问题..客户端过滤loadonce:真通常慢? – 2012-07-30 16:53:34

回答

2

如果你打开替代网格库,我建议你看看SlickGrid

我一直在使用它一段时间了。似乎是类中最好的JavaScript网格库。 一旦你掌握了它,它的易于定制&也有相当多的插件。

+0

很多代码虽然(单独的文件/ http请求)。另外,作者应该将一个README.md文件添加到回购。 – 2012-08-22 05:21:58

+0

@JoeJohnson我认为你最终会使用JS,CSS缩小器,如[YUI压缩器](http://developer.yahoo.com/yui/compressor/)或[Closure Compiler](https://developers.google .com/closure/compiler /)或者类似于[WRO4J](http://code.google.com/p/wro4j/)的东西。 – Sujay 2012-08-22 07:05:04

3

您可能想要考虑使用DataTables(http://www.datatables.net)作为替代。排序是,我相信整个数据集(这会使处理此脚本非常缓慢 - 然后绑定事件)。我最近研究了表格排序和网格布局的选项 - 由于性能问题,我通过jqGrid使用了DataTables。

此外,看看获取最新版本是否无助于加快速度...... http://www.trirand.com/blog/(6月份的新版本)。