2011-04-06 66 views
3

我一直在这个问题上停留了两天。做了很多谷歌搜索,但无法找到确切的答案。JQGrid filterToolbar

以下是jqGrid的定义

$("#tblresults").jqGrid({ 
      datastr: data, 
      datatype: 'jsonstring', 
      height: 230, 
      colNames: colNames, 
      colModel: colModel, 
      rowNum: -1, 
      viewrecords: true, 
      loadComplete: function() { 
       ChangeSize('#tblresults', 70); 
      } 
     }); 

这是过滤器定义

$("#tblresults").filterToolbar({ searchOnEnter: true, stringResult: true, defaultSearch: "cn", groupOp: "AND" }); 

我从一个简单的getJSON调用获取数据。但是,当我尝试使用过滤器没有任何工作。 我调试了一段代码,发现jqgrid在内部调用reloadgrid,这会使数据消失。

任何人都可以告诉我,我们如何在客户端完全过滤jqgrid。 我正在使用v3.8,并且我了解到jqgrid v3.7的这个客户端过滤逻辑就位。

由于提前

回答

3

你有数据所有你不应该使用-1作为rowNum值的第一位。而不是像rowNum:1000那样使用任何可靠的值。更好的办法是使用本地数据分页。在这种情况下,您应该设置例如rowNum:10, rowList:[5,10,20,100]

如果你输入参数的jqGrid的colNamescolModeldata参数每AJAX服务器调用你还应该考虑使用data参数而不是datastr。如果datatype应该从'jsonstring'更改为'local'

其他一些常见参数,如gridview:trueheight:'100%'对您也可能有用。第一个(gridview:true)只是改善性能没有任何缺点,第二个(height:'100%')将遵循选择没有垂直滚动条的最佳网格高度。它可以很好地结合本地数据分页(参数如rowNum:10, rowList:[5,10,20,100])。

+0

我在某处读到rowNum = -1将显示网格中的所有记录,这是我的要求。在任何情况下,记录数不会超过200,所以垂直滚动条很好。我会尝试更改数据类型和数据参数,看看它是否工作。但现在我已经使用了过滤服务器上记录的旧方法。 – Nilesh 2011-04-06 12:36:37

+0

@Nilesh:如果将值发送到服务器,值'rowNum = -1'可能会正常。该值在jqGrid(<3.7)版本中使用旧,关于值200作为行数。在用户滚动窗口之前真的需要填充浏览器窗口的一部分吗?如果您将使用'rowNum:10'而不是'rowNum:200',网格将快速准备20次。用户是否可以阅读和**分析200行网格?可能的排序和过滤(参见[工具栏过滤](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:toolbar_searching))对用户来说会更好,并且可以使用分页。 – Oleg 2011-04-06 14:58:00

0

添加这些参数和您的工具栏搜索应该工作。使用jqgrid启动时,我也面临类似的问题。

search:true, 
loadonce:true,