在過去的幾天裏,我一直在撕掉我的頭髮。就像問題的簡要概述一樣。我正在使用JqGrid 4.2.0(寫作時的最新版本)。在一個頁面中,我有兩個網格。一個在左邊,希望充當導航員。我想在右側網格中加載數據,數據由左側單擊的項目的行ID確定。JQGrid使用OnSelectRow在另一個網格上加載數據
我的問題是,第一個選定的行ID會「卡住」,並且將來所有的ajax調用都是相同的rowid(例如:如果第一個選定行是514,則每個其他選定行將在ajax調用上輸出514加載其他網格,如果第一次被選中是513,所有其他513等)
我懷疑它可能是某種變量交叉或某些因爲我在整個執行期間放置了警報調用以進行測試,並且它們都提醒正確ID號,直到下一個網格被加載的點,此時行ID變成錯誤的。
這裏是下面我的代碼:
第一段左側與OnSelectRow呼叫初始列表,和代碼的第二部分是用於在其上實際工作保持數據)的右手側的數據格
renderImportsList = function(url, data, firstrow) {
var cnames = data.names;
var cmodel = data.model;
currentrow = firstrow;
$("#imports_grid").jqGrid({
url: url + "&type=list",
//caption: "Imports",
datatype: "json",
colNames: cnames,
colModel: cmodel,
recordtext: "<b>Imports: {1}</b>",
autowidth: true,
rowNum: 10000,
toolbar: [true,"top"],
pager: "#imports_grid_pager",
pgbuttons: false,
pginput: false,
viewrecords: true,
multiselect: false,
sortorder: "desc",
sortable: true,
onSelectRow: function(rowid) {
if (rowid != firstrow) {
if ($("#" + firstrow).hasClass("ui-state-highlight"))
$("#" + firstrow).removeClass("ui-state-highlight")
}
setTimeout(function() {
// Display import items
var itype = "checkpoint";
alert(rowid); // This returns the right row ID so far
renderImportItems(url, rowid, itype);
}, 500);
},
loadComplete: function() {
$("#imports_grid tr").css("border-color", "#666");
$("tr.jqgroup").css("background", "#e9efff");
$("tr.jqfoot").css("background", "#ced5e9");
$("#imports_grid tr.jqfoot td").css("border-right", "none");
$("#t_imports_grid").css("padding-bottom", "3px");
$("#imports_grid").setSelection(firstrow, true);
$("#imports_grid").trigger("reloadGrid"); // Call to fix client-side sorting
}
});
$("#imports_grid").jqGrid('navGrid','#imports_grid_pager',{edit:false,add:false,del:false,search:false});
$("#imports_grid").trigger("reloadGrid"); // Call to fix client-side sorting
sizeGrid("imports_grid");
}
這部分執行罰款,在這個階段,ROWID是我點擊,根據上面放置警告。下面是在上面的函數中從OnSelectRow中調用的第二個函數。
renderImportItems = function(url, rowid, itype) {
$.ajax({
url: srvrname + "applications/PMS/views/view/imports/" + itype + ".php",
success: function(data) {
var cnames = data.names;
var cmodel = data.model;
alert(rowid); // Here, the code still executes the right row ID
$("#checkpoint_grid").jqGrid({
url: url + "&rid=" + rowid + "&type=" + itype,
// This is where it breaks. No matter what, I keep getting rowid to equal whichever row was selected the very first time the grid was clicked (or loaded programatically onload)
datatype: "json",
colNames: cnames,
colModel: cmodel,
recordtext: "<b>Total: {1}</b>",
autowidth: true,
rowNum: 500,
pager: "#" + itype + "_grid_pager",
pgbuttons: false,
pginput: false,
viewrecords: true,
multiselect: false,
sortorder: "desc",
sortable: true,
loadComplete: function() {
$("#" + itype + "_grid tr").css("border-color", "#666");
$("tr.jqgroup").css("background", "#e9efff");
$("tr.jqfoot").css("background", "#ced5e9");
$("#" + itype + "_grid tr.jqfoot td").css("border-right", "none");
$("#" + itype + "_grid").trigger("reloadGrid"); // Call to fix client-side sorting
}
});
$("#" + itype + "_grid").jqGrid('navGrid','#' + itype + 'grid_pager',{edit:false,add:false,del:false,search:false});
$("#" + itype + "_grid").trigger("reloadGrid"); // Call to fix client-side sorting
sizeGrid(itype + "_grid");
}
});
}
正如你可以在上面看到:在處第一個警報被稱爲點;它仍然輸出正確的ID號碼,但一旦第二個網格被初始化;該ID返回到第一次呼叫時初始設定的值。
提供的任何幫助將不勝感激。如果有幫助,這裏有一些螢火輸出來證明這個問題...
(域名隱私刪除)
(先裝:方案:FIRSTROW選擇= 514) 響應://mydomain.com /views/view/grid.php?rid=514 &類型=關卡& _search =假& ND = 1321336809180個&行= 500 &頁= 1 & SIDX = & SORD =降序
(已點擊行:選擇的行= 503) 迴應:// mydo main.com/views/view/grid.php?rid=514 &類型=關卡& _search =假& ND = 1321336863994個&行= 500 &頁= 1 & SIDX = & SORD =降序
(點擊的行:選定的行= 510) 迴應://mydomain.com/views/view/grid.php?擺脫= 514 &類型=關卡& _search =假& ND = 1321336864848個&行= 500 &頁面= 1 & SIDX = & SORD =遞減
這完成了絕招,謝謝! – Preller