在jqGrid中的每个过滤器操作上都会触发loadComplete事件?

时间:2011-06-07 20:31:04

标签: jqgrid event-handling

根据jqGrid wiki页面,“此事件在每次服务器请求后立即执行。”

在我的网格中,我在顶部有一个过滤器工具栏。

$(table_data_obj).jqGrid('filterToolbar', {stringResult:true, searchOnEnter:true, autosearch:true, defaultSearch:'cn'}); 

和loadComplete函数如:

loadComplete: function(data) {
 data_processing(data);
}

每当我在本地过滤网格数据(没有新的服务器请求)时,都会调用data_processing(数据)。我不想要这种行为。如何确保仅使用新的服务器请求调用data_processing(数据)。

修改 每次从服务器获取新数据时,我都想做一些数据处理。那有更好的地方吗?

2 个答案:

答案 0 :(得分:1)

您没有发布jqGrid定义,也没有描述为什么您有来自服务器的某些时间数据以及某些时间本地数据。我想如果你需要从服务器重新加载数据,你可以使用loadonce:true选项,有时将jqGrid的datatype参数重置为原始值'json'或'xml'。如果是您的情况,我建议您测试datatype参数是否为“本地”。您可以使用if if ($("#list").jqGrid('getGridParam','datatype') !== 'json') {/* local data */}或仅使用$("#list")[0].p.datatype代替$("#list").jqGrid('getGridParam','datatype')。如果数据是从服务器加载的,datatype将是'json'(或'xml')。 处理loadComplete事件后,如果您使用datatype选项,则loadonce:true将更改为“本地”。

答案 1 :(得分:0)

使用firebug来查看对服务器的请求。检查参数,你会知道哪些值被发布。在事件中使用警报来确定抛出服务器请求的特定事件