這是我之前發佈的here問題的後續。由於Oleg的回答,我現在可以正確顯示網格了。但是,現在我需要在引導菜單項單擊時用不同的URL刷新jqgrid中的數據。以下是我的代碼:刷新菜單項上的jqgrid點擊,從不同的URL獲取數據
$("#menuitem").click(function(e){
$("#grid").jqGrid('setGridParam', {url: '/getdata?id=1234&name=val.text'});
$('#grid').trigger("reloadGrid");
});
菜單選項是在我們從ajax請求獲取數據後動態添加的。網格似乎在刷新重新加載時重新加載。但是,它似乎從舊URL('/ getdata')獲取數據,而不是具有不同參數集的新數據。我也嘗試過提到的解決方案here,但它沒有在我的情況下工作,因爲我已經動態添加菜單項。
任何幫助,非常感謝。
編輯:我看着螢火蟲上的頁面請求。點擊菜單項時,我看不到請求。我還添加了
$("#list").jqGrid('GridUnload');
到點擊處理函數,如this問題的答案中提到的那樣。它爲我清除了網格,但沒有重新加載。所以我在那裏添加了jqgrid的代碼,然後它工作,jqgrid顯示新的數據。所以我的代碼與變化看起來像這樣:
$("#menuitem").click(function(e){
$("#list").jqGrid('GridUnload');
$("#grid").jqGrid({
url: '/getdata?id=1234&name=val.text'',
datatype: "json",
colNames: ['data'],
colModel: [
{name: 'data', align: 'center'}
],
jsonReader: {
root: "logs",
cell: "",
id: function() {
return function() {
return $.jgrid.randId();
}
},
page: function() { return 1; },
total: function() { return 1; },
records: function(obj) { return obj.logs.length; }
},
loadonce: true,
viewrecords: true,
autowidth: true,
ignoreCase: true,
height: "auto",
rowNum: 999,
autoencode: true,
beforeProcessing: function (data) {
var items = data.data.data.split("\n"), i, l, item;
data.logs = [];
for (i = 0, l = items.length; i < l; i++) {
item = $.trim(items[i]);
if (item.length > 0) {
data.logs.push([item]);
}
}
}
}).jqGrid('filterToolbar', {stringResult: true, searchOnEnter: false, defaultSearch: "cn"});
});
有沒有更好的方法來做到這一點。它看起來過於繁瑣而沉重。有沒有辦法讓重載網格工作?我想這是內部發生的,但是當你使用插件時,代碼似乎太多了。
感謝,
阿莎
謝謝@Oleg,工作就像一個魅力。我現在明白了爲什麼它沒有提前解釋你的解釋。我將在下週左右在服務器端爲此jqgrid執行分頁。所以這個解釋有幫助。該網址確實爲請求發生了變化。 URL語法問題僅在問題的文本中,我在複製時插入該問題的文本。再次感謝。 – Alice