我使用jqgrid
插件构建了struts2-jquery-jqgrid
。除了分页,
问题:当我点击寻呼机中的下一个按钮时,我想执行一些基于ajax的操作。我正在使用onPaging(jqgrid method)
或onPagingTopics
主题(jqgrid-plugins)来捕获分页事件。我成功地获得了这个分页事件,但是从这里开始实际问题。当我点击下一个按钮时,我使用onPagingTopics 主题捕获分页事件,在此事件中我调用ajax-request,但在此ajax-request完成之前,jqgrid
自动获得重新加载,这就是我无法成功进行 ajax-call 的原因。为什么会发生这种情况以及如何限制 jqgrid重新加载。
注意:我的jqgrid通过调用此网格中指定的网址来获取重新加载。您可以在此处查看网格how to load json in jqgrid
这就是我捕获分页事件的方式:
$.subscribe('paging',function(event,data)
{
var search_string=$("#searchString").val();
var search_field=$("#searchField").val();
$.ajax({
url:"adminJsontable?searchString="+search_string,
dataType:"json",
success: function(jsondata,stat)
{
var mgrid = jQuery("#gridtable")[0];
mgrid.addJSONData(jsondata);
}
});
});
更新部分:
$.subscribe('before',function(event,data)
{
var grid = jQuery("#gridtable");
grid.jqGrid('setGridParam',{url:"adminJsontable?searchString="+"neo"});
});
这是我改变网址的方式,但它不起作用。 通过这种方式,我可以获得准备,完成,成功等任何事件。现在请指导我,我必须这样做。
注意:我可以使用jqgrid中使用的任何方法或任何事件,但不知道如何制作它。
答案 0 :(得分:1)
我认为对jqGrid的工作方式存在误解。如果用户选择另一个页面 jqGrid按默认情况向服务器发出ajax请求。如果您需要在对服务器的请求中包含其他自定义过滤器,则可以使用postData
(请参阅the answer)。您可以执行以下操作
$("#grid").jqGrid({
url: "adminJsontable",
postData: {
searchField: function () {
return $("#searchField").val();
},
searchValue: function () {
return $("#searchString").val();
}
},
... // other options which you use
});
我自己不使用Struts,但我相信你可以自己重写Struts内部的用法。
以上代码会在每个请求上向服务器发送其他参数searchField
和searchValue
,包括分页排序等。因此,如果用户在{{1}中输入一些数据然后,您的服务器代码会考虑数据。
更新:如果您在使用struts2-jquery-jqgrid插件时不知道如何指定#searchField
,则必须仍然能够在HTML页面上包含一些JavaScript文件。如果你包括
#searchString
您可以将jqGrid的postData
参数的默认值$.extend(true, $.jgrid.defaults, {
postData: {
searchField: function () {
return $("#searchField").val();
},
searchValue: function () {
return $("#searchString").val();
}
}
});
重新定义为上面建议的值。在创建 jaGrid之前,应该在上执行上述代码,这一点很重要。如果您只能在创建网格后执行的JavaScript代码,则可以执行以下代码
{}