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