jqGrid: замените один щелчок двойным щелчком, чтобы войти в режим редактирования ячейки
При использовании режима редактирования ячейки в jqGrid поведение по умолчанию состоит в том, чтобы входить в режим редактирования ячейки при каждом щелчке по этой ячейке или если эта ячейка выбрана и нажата клавиша ввода.
Есть ли способ изменить это поведение, чтобы один щелчок не переводил его в режим редактирования, а двойной щелчок? Вход в режим редактирования при вводе в порядке.
2 ответа
Непосредственно он не поддерживается режимом редактирования ячейки, но мне кажется, что вы можете реализовать его самостоятельно так же, как и для встроенного редактирования (см., Например, jqGrid - редактируйте только определенные строки для редактируемого столбца). Вы не должны устанавливать cellEdit
параметр jqGrid для true
, но используйте непосредственно методы редактирования ячеек, такие как editCell
описано в http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing.
Другой способ - использовать встроенное редактирование по двойному щелчку вместо редактирования ячейки.
Прежде всего позвольте мне поблагодарить вас за чтение ваших ответов. Мне удалось найти это решение. Мне нужно было определенное поведение для редактирования ячеек. Мне нужно было иметь возможность выбрать только одну строку одним щелчком мыши. Нет мульти выбора. Мне нужно было редактировать ячейки, которые активировались по двойному клику. Мне нужно было иметь возможность отменить редактирование, если была нажата строка, отличная от выбранной. Мне также нужно было иметь возможность ограничить пользовательский ввод. Мои первые поиски в Google привели меня сюда, и я почти потерял надежду, когда наткнулся на другие материалы, которые вы опубликовали.
Вот решение, которое я придумал. Большая часть из ваших предыдущих ответов. Я сделал некоторые изменения. Так что большая часть этого кредита идет к вам, но я хотел опубликовать его здесь, чтобы помочь другим. Я впервые публикую сообщение о решении, поэтому надеюсь, что оно понятно и поможет.
edit.iCol. edit.iRow и edit.rowID сохраняются, чтобы мы могли отменить редактирование. Используйте здесь свои собственные переменные для хранения этих значений.
cellEdit: true,
cellsubmit: 'clientArray',
beforeSelectRow: function(rowid) {
if (edit.iRow != null && rowid !== edit.rowID) {
$('#list').jqGrid("restoreCell",edit.iRow, edit.iCol);
edit.iRow = edit.iCol = null;
}
$('#list').jqGrid('setSelection', rowid);
},
afterSaveCell: function (rowid, name, val, iRow, iCol) {
alert("after");
},
beforeSaveCell: function (rowid, name, val, iRow, iCol) {
alert("before");
},
ondblClickRow: function (rowid, iRow,iCol) {
edit.iRow = iRow;
edit.iCol = iCol;
edit.rowID = rowid;
$("#list").editCell(iRow, iCol, true);
}