0
我有一個jqGrid以及一個jQuery UI按鈕工具欄。我的工具欄包含查看&編輯模式。在我的jqGrid onSelectRow中,我用方法isInEditMode檢查編輯模式。如果帶有ui-active-state的按鈕是編輯按鈕,則返回true。jqGrid選擇行只有一次,隨後不能選擇任何其他行,網格卡住
我的網格似乎加載正確,懸停類打開/關閉拖動我的鼠標在行上。如果我不處於編輯模式並單擊一行,它會執行其他功能,這是正確的。但是,當isInEditMode返回true時,它似乎只允許onSelectRow觸發一次。
非常感謝所有的幫助。
var lastselTsg;
grid.jqGrid({
colNames: ['BudgetId', 'BudgetAccountId', 'Account #', 'Name', 'Cost', 'StaticRowId', 'SortOrder'],
colModel: [
{ name: 'BudgetId', index: 'BudgetId', hidden: true, edithidden: true },
{ name: 'BudgetAccountId', index: 'BudgetAccountId', hidden: true, edithidden: true },
{ name: 'AccountNumber', index: 'AccountNumber', sortable: false, width: 70 },
{ name: 'BudgetName', index: 'BudgetName', sortable: false, width: 230, editable: true, edittype: 'text', editoptions: {
defaultValue: "",
dataInitInit: function (el) {
var value = $(el).val();
value = value.replace("<strong>", "");
value = value.replace("</strong>", "");
$(el).val(value);
$(el).focus();
if (value == "") {
$(el).remove();
return false;
}
}
}
},
{ name: 'TotalCost', index: 'TotalCost', sortable: false, formatter: totalCurrencyFormatter, width: 100 },
{ name: 'StaticRowId', index: 'StaticRowId', sortable: false, hidden: true, edithidden: true },
{ name: 'SortOrder', index: 'SortOrder', sortable: false, hidden: true, edithidden: true }
],
pager: pager,
pgbuttons: false,
pginput: false,
rowlist: [],
sortname: 'SortOrder',
rowNum: 99999999,
sortorder: "asc",
datatype: "json",
viewrecords: true,
url: url + "GetLoad",
editurl: url + "SaveGrid/",
loadComplete: function (data) {
},
onSelectRow: function (rowId) {
if (isInEditMode(budgetId)) {
if (rowId && rowId !== lastselTsg) {
grid.jqGrid('restoreRow', lastselTsg);
var rowData = grid.jqGrid("getRowData", rowId);
if (rowData != undefined && rowData != null) {
console.debug("entering edit mode");
grid.jqGrid('editRow', rowId, true, '', '', url + 'SaveTopSheet', {
budgetAccountId: rowData.BudgetAccountId
},
function(rowid, response) {
console.debug("aftersave: reloadGrid");
grid.trigger("reloadGrid");
}, '', function(rowid, reuslt) {
console.debug("after restore: reloadGrid");
grid.trigger("reloadGrid");
});
}
lastselTsg = rowId;
}
} else {
var getRowData = $("#baseTopSheetGrid" + budgetId).jqGrid('getRowData');
var rowData = getRowData[rowId - 1];
onSelectGridRow(rowData);
}
},
gridComplete: function() {
var ids = grid.jqGrid('getDataIDs');
var getRowData = grid.jqGrid('getRowData');
if ($.isFunction(budgetGridLoadComplete))
budgetGridLoadComplete(getRowData);
}
}).navGrid(pager, { edit: false, add: false, del: false, search: true });
onSelectrow(rowData)是傳遞給生成網格的方法的函數。我已更改爲函數的名稱以避免將來發生任何衝突,但我仍然收到此問題。 – Josh 2010-08-19 16:12:54
當前您發佈的代碼中有許多對外部函數('isInEditMode','onSelectGridRow','budgetGridLoadComplete')的引用。所以你的問題不能被複制。你描述的問題不存在於一個簡單的jqGrid中。如果你希望有人解決你的問題,你應該發佈一個代碼,讓其他人可以重現你的問題。 – Oleg 2010-08-19 16:40:35