我需要从期望URL +参数+序列化有效负载的服务器(即消息体)加载网格。我正在使用POST方法,服务器期望这与JSON有效负载一起使用。
序列化有效负载是MongoDB的JSON字符串,它指示mongo如何查找我们关心的数据。我设计RESTful接口以jq格式响应,jqGrid期望使用分页,我希望jqGrid将“page”,“rows”等的值附加为查询字符串:{{1} }
这是我的网格设置
baseURL?rows=10&page=1
我在这里留下了一些东西来展示我的尝试。我尝试使用serializedGridData函数更新URL,没有运气,无论出于什么原因它似乎被忽略。 我在请求之前尝试更新URL,但仍然没有运气。
最初我只是设置postData =序列化数据,假设仍会附加默认的分页参数。事实并非如此。
postData的文档只是说“查看操作的API方法”没有链接(没有链接在WIKI ?? !!!来吧!!)
我已经阅读了我在这里找到的每一个Oleg答案,似乎没有解决这个场景,我觉得很难理解,这一定是一个非常常见的用例。
这就是我的服务器如何响应初始数据请求(不需要分页)
grid.jqGrid({
ajaxGridOptions: {
contentType: "application/json",
},
altRows: true,
autoWidth: true,
caption: "Results for " + ADC_Idl.buildQueryTitle(),
colNames: displayNames,
colModel: columnModel,
datatype: "json",
height: "auto",
mtype: "POST",
pager: '#pager5',
//postData: ADC_Idl.buildQueryPayload(),
serializeGridData: function (postData) {
grid.jqGrid("setGridParam", "url", ADC_Idl.buildQueryURL() + "?" + jQuery.param(postData));
return ADC_Idl.buildQueryPayload();
},
beforeRequest: function() {
grid.jqGrid("setGridParam", "url", ADC_Idl.buildQueryURL() + "?page=" +
grid.jqGrid("getGridParam", "page") + "&rows=" +
grid.jqGrid("getGridParam", "rowNum") );
},
rowList: [10, 20, 30],
rowNum: 10,
url: ADC_Idl.buildQueryURL(),
viewrecords: true,
jsonReader: {
repeatitems: false
}
为简洁而截断。
经过三天尝试我能想到的一切,我正在恳求一些jqGrid专家帮忙!!
谢谢!
更新
想出来,奥列格的评论让它变得更好。张贴为答案!
答案 0 :(得分:0)
我发布这个问题后几乎立刻就发现了StackOverflow的另一篇文章,
的jqGrid( “setGridParam” ... 设置然后获取格式不同,它除了更新的哈希与get ... UGH的参数列表之外。
一旦我修好了,就行了!
使用Oleg的一些建议(谢谢!)我有一个更好的解决方案,因为代码更清晰,感觉更少hacky。
grid.jqGrid({
ajaxGridOptions: {
contentType: "application/json",
},
altRows: true,
autoWidth: true,
caption: "Results for " + ADC_Idl.buildQueryTitle(),
colNames: displayNames,
colModel: columnModel,
datatype: "json",
height: "auto",
gridview: true,
mtype: "POST",
pager: '#pager5',
postData: ADC_Idl.buildQueryPayload(),
beforeRequest: function() {
var gridParameters = jQuery(this).jqGrid("getGridParam");
var baseURL = gridParameters.url.split("?").shift();
var queryString = {
page: gridParameters.page,
rows: gridParameters.rowNum
};
gridParameters.url = baseURL + "?" + jQuery.param( queryString );
},
rowList: [10, 20, 30],
rowNum: 10,
url: ADC_Idl.buildQueryURL(),
viewrecords: true,
jsonReader: {
repeatitems: false,
id: "_id"
}
});
相关部分是:
还建议我提供我的colModel,但我不能,这个代码用于在用户提交针对mongodb的查询时动态构建jqGrid。网格是作为对用户输入的响应而构建的,因此它不是我必须共享的内容。