我有一个wcf服务为大量的报告,返回json数据到我的jqgrid。一切按预期工作。但是,由于每个报表查询都有大量的用户输入,我选择使用与我在服务器上设置的系列“输入模型”相匹配的json字符串。我不想在我的路线中混淆冗长的复杂查询字符串。在jqGrid上设置Url loadBeforeSend
问题:如何添加jqGrid查询字符串参数做我的json字符串我上传到服务器?我试过'loadBeforeSend',但我似乎无法重写ajax url。我无法使用url参数的函数,因为网格参数尚不可用。有任何想法吗?谢谢。
我jqGrid的功能(简称为简洁起见):
function loadGrid() {
var tbl = $('#tbl');
tbl.jqGrid({
loadBeforeSend: function() {
var ai = {
dateFrom: dbDateTime($('#at-datefrom').val()),
dateTo: dbDateTime($('#at-dateto').val()),
sidx: tbl.getGridParam('sortname'),
sord: tbl.getGridParam('sortorder'),
page: tbl.getGridParam('page'),
rows: tbl.getGridParam('rowNum')
};
var newUrl = getBaseURL() + 'ReportingService.svc/report/?json=' + JSON.stringify(ai);
tbl.jqGrid().setGridParam({ url: newUrl });//Everything works perfect up to this point. All the values are in my json string and my url is correct.
},
url: '', //Empty because I need to override it
datatype: 'json',
mtype: 'GET',
ajaxGridOptions: { contentType: 'application/json' },
loadError: function (xhr, status, error) { alert(status + "" + error); }
}).navGrid('#attendance-pager', { edit: false, add: false, del: false });
}
为什么你不推荐使用数据类型函数?到目前为止,它一直在为我工作。感谢Oleg。 – trevorc 2011-06-14 20:52:24
@nameEqualsPNamePrubeGoldberg:您的问题的答案可能会很长。这种方式有许多缺点。主要原因是有更直接的方式,你不使用。你的问题就像一个问题,为什么你应该使用钥匙到门上,而不是使用窗口。答案是:因为你有门的钥匙,而门是通过门设计的方式。这是最直接和最简单的方法。你之前通过窗户进入了房子,它工作。好的,但通过窗户的方式只能用于极端情况,而不能用于有序情况。 – Oleg 2011-06-14 21:01:57
@nameEqualsPNamePrubeGoldberg:jqGrid旨在读取XML数据和几乎任何类型的JSON数据。如果你有其他类型的数据,你应该使用数据类型作为函数。 – Oleg 2011-06-14 21:05:59