jquery UI 단추 도구 모음과 함께 jqGrid가 있습니다. 내 도구 모음은보기 & 편집 모드로 구성됩니다. 내 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
현재 게시하는 코드에는 외부 함수 ('isInEditMode','onSelectGridRow','budgetGridLoadComplete')에 대한 많은 참조가 있습니다. 따라서 문제를 재현 할 수 없습니다. 설명하는 문제는 간단한 jqGrid에 존재하지 않습니다. 누군가가 문제를 해결하기를 원하면 다른 사람들이 문제를 재현 할 수있는 코드를 게시해야합니다. – Oleg