我和jqgrid一起战斗了大约8天(或更长时间),我做了一切除了小小的事情.我有一个大型数据库,我试图按部分显示它.我的意思是,SQL查询被执行每当时间next,prev,last,first或者当用户输入一个页码.我管理了它,一切都是正确的,但现在网格没有显示正确的最后一页.我的意思是,即使有42页,它显示1中的1.
现在,当我输入页码时,网格正在刷新并显示正确的结果,但是寻呼机说的是1 of 1,5 of 1,依此类推.
我用过的是:
jQuery("#list").jqGrid({
datatype: "jsonstring",
datastr: JSON.stringify(gridDtls),
jsonReader:{
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
id: "0"
},
Run Code Online (Sandbox Code Playgroud)
我每次点击一个按钮时用来运行查询的代码都在这里(注意下面的代码仅在按下enter时工作,因为按钮处于非活动状态):
onPaging: function(pgButton){
var status = returnUserStatus();
var page1 = $(this).jqGrid("getGridParam", "page");
var totalPages = $(this).getGridParam('lastpage');
if(pgButton=="next_pager"){
}
if(pgButton=="prev_pager"){
}
if(pgButton=="last_pager"){
}
if(pgButton=="first_pager"){
}else if((pgButton !="first_pager") && (pgButton !="last_pager") && (pgButton !="prev_pager") && (pgButton !="next_pager"))
},
Run Code Online (Sandbox Code Playgroud)
一切似乎都对我不对.为什么jqgrid没有返回正确的页面?我确信我错过了一些小的东西.请帮我!!!
我想你问题的原因是datatype: "jsonstring"你使用服务器端分页.而不是你应该使用datatype: "json".
理解:类型datatype: "jsonstring"几乎相同datatype: "local".最重要的区别是,jqGrid的使用jsonReader中的情况下datatype: "jsonstring",而不是localReader中的情况下使用datatype: "local".数字页面将由jqGrid计算,并且将忽略服务器响应的值total和records来自服务器响应的值.
jqGrid提供了很多自定义选项,几乎可以向服务器发送任何Ajax请求并读取几乎任何响应.您只需使用相应的选项即可.因为您没有发布有关服务器接口的任何详细信息,所以我不能在此处写更多详细信息.
我建议你检查选项prmNames,ajaxGridOptions回调serializeGridData和loadBeforeSend.该选项允许自定义对服务器的请求.另一个选项jsonReader和jsonmap回调beforeProcessing允许读取服务器响应.
更新:该演示演示了如何在jqGrid的分页上自动datatype: "json"发送Ajax请求.选择网格变得很重要.在你的情况下,它似乎是列.所以代码可以idlogin
$("#userslist").jqGrid({
url: "admin",
postData: {
WrJOB: "listUsers",
companyId: function () { return $("#companyId").val(); },
userStatus: function () { return returnUserStatus(); }
},
jsonReader: {
root: "gridDtls.rows",
page: "gridDtls.page",
total: "gridDtls.total",
records: "gridDtls.records",
repeatitems: false
},
prmNames: {page: "pageNum"},
colModel: [
{name: 'login', key: true, ...}
...
});
Run Code Online (Sandbox Code Playgroud)
对URL的请求"admin"将pageNum自动包含参数."rows"参数的值为20.这是页面的大小.如果用户在寻呼机中选择另一个值(请参阅参考资料rowList: [20, 40, 60]),则当前值将发送到服务器.该选项prmNames将默认参数重命名"page"为"pageNum".以同样的方式,您可以重命名将jqGrid发送到服务器的任何其他参数.用法null为价值将防止参数发送给服务器.例如,您可以使用
prmNames: {page: "pageNum", nd: null, search: null, sort: null, order: null}
Run Code Online (Sandbox Code Playgroud)
消除发送不使用的参数.
| 归档时间: |
|
| 查看次数: |
824 次 |
| 最近记录: |