2011-06-16 54 views
0

文本框出现在标题下方,但输入值时什么都没有发生。 虽然hiting输入按钮后,它显示“加载”的迹象,但网格中没有改变。 M使用下面的代码为filterToobar。我在jqgrid的定义之后和$ .ready函数(everthing else在我的代码中正常工作)之后编写了此代码。 我的浏览器IE7是filterToolbar不起作用

jQuery("#list").jqGrid({ 
    url: 'someactionclass' 
    datatype: "json", 
    mtype: "POST",  
    colNames , 
    colModel, 
    rowNum:25, 
    rowList:[25,50,75,100], 
    pager: '#pager', 
    sortname: 'rgs_id', 
    height: '100%', 
    sortorder: "asc", 
    editurl:'someactionclass' 
}); 
jQuery("#list").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false }); 
jQuery("#list").jqGrid('navButtonAdd', "#pager", 
    { caption: "Toggle", title: "Toggle Search Bar", buttonicon: 'ui-icon-pin-s', 
     onClickButton: function() { $("#list")[0].toggleToolbar() } }); 

回答

1

您可以使用服务器端的数据类型:datatype: "json"。在的情况下,服务器负责对数据进行排序,分页和过滤。 jqGrid只是添加过滤参数作为附加参数并发送到服务器。

如果你想使用本地端排序,分页和数据过滤,你可以使用loadonce:true参数。在这种情况下,您应该包括服务器响应网格中的整个数据(所有页面)。您应该明白,在第一次加载数据后,网格的datatype将自动从datatype: "json"更改为datatype: "local"。如果您需要从服务器重新加载数据,则必须将datatype更改为原始datatype: "json"值,方法为setGridParam方法,然后重新加载网格。

您应该使用gridview:true jqGrid参数来提高jqGrid的性能。无论如何,本地排序和筛选的可接受性能只能用于不太多的行。使用不大的页面大小(例如可以放在页面上的25行而不滚动)可以额外提高性能。

+0

@Oleg添加此代码后。它仍然没有工作。 gridview:true,loadonce:true,loadComplete:function(){$('#needsList')。setGridParam({datatype:“json”}); $( '#demandsList')的触发器( “reloadGrid”)。 } – Chhaya 2011-06-17 05:24:45

+0

@Oleg我得到了filterToolbar的帮助,上面添加的代码我再次写了整个代码,然后它开始工作,但通过使用“loadonce:true”分页不能正常工作。只有第一页正在显示,并且没有选项可以转到下一页,但如果删除“loadonce:true”,则页数为“4”,但filterToolbar不起作用。 – Chhaya 2011-06-17 05:55:42

+0

@Chhaya:我写过你,如果使用'loadonce:true',服务器必须在响应**中放置整个数据(所有页面)**。我想你的服务器代码使用'rows'参数(来自'rowNum')。你应该**忽略**值。另外,你可以在服务器上使用'rowTotal' jqGrid参数和'totalrows'参数。 – Oleg 2011-06-17 06:41:55