我有一個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