我有一个jqGrid以及一个jquery UI按钮工具栏。我的工具栏包含View&编辑模式。在我的jqGrid onSelectRow中,我使用方法isInEditMode检查编辑模式。如果具有ui-active-state的按钮是编辑按钮,则返回true。
我的网格似乎正确加载,并且悬停类在鼠标悬停在行上时打开/关闭。如果我没有处于编辑模式并单击一行它会执行其他功能,这是正确的。但是当isInEditMode返回true时,它似乎只允许onSelectRow触发ONCE。
非常感谢所有的帮助。
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 });
答案 0 :(得分:0)
else
事件句柄中的onSelectRow
部分看起来有点奇怪。你最好不要在onSelectRow
内拨打onSelectRow
,同一个getRowData
代码片段中else
的使用似乎也是错误的(rowId
应该是函数的参数)。