Я использую jqGrid с datatype: 'local'
. Данные сетки устанавливаются динамически через addRowData
. Я не использую асинхронный материал ajax, такой как url
+ datatype: json
, потому что сетка должна отображать только состояние клиента.jqGrid onDelete обработчик события
Теперь я хочу использовать функциональность строки удаления jqGrid (delbutton: true
), которая вызывает функцию delGridRow
. Это удаляет строку просто отлично, но, конечно, мне нужно удалить базовые данные. Поскольку все это просто клиент, я не могу использовать editurl
.
Что я хочу, это onRowDelete
или onRowEdited
событие. Но jqGrid не поддерживает такую вещь, или, по крайней мере, я не нашел такой вещи. Реализация моей собственной кнопки удаления будет прекрасной, но мне удалось это сделать только с помощью панели инструментов, которая не то, что я хочу.
После много, много возился я придумал следующее решение, чтобы добавить свой собственный обработчик события jqGrid:
var originalDelFunc = $.fn.jqGrid.delGridRow;
$.fn.jqGrid.delGridRow = function (rowids, oMuligrid) {
var onPreDeleteRowEventHandler = this.getGridParam('onPreDeleteRow'),
consumeFlag = false;
if (typeof onPreDeleteRowEventHandler === 'function') {
consumeFlag = !!onPreDeleteRowEventHandler(rowids, oMuligrid);
}
if (!consumeFlag) {
originalDelFunc.call(this, rowids, oMuligrid);
}
};
использование:
grid.jqGrid(
'setGridParam',
{
onPreDeleteRow: function(rowids, oMuligrid) {
// remove client data here
}
});
Теперь мой вопрос: почему это так сложно? Я что-то упустил? Является ли это решение жизнеспособным, или оно, вероятно, будет ломаться с будущими версиями?
Спасибо, место на. В конце концов, есть обратный вызов :-) –
@OliverSchimmer: Добро пожаловать! – Oleg