Пользовательское поведение редактирования jqgrid для одного столбца - PullRequest
2 голосов
/ 11 августа 2011

Я хотел бы получить jqGrid, в котором для одного определенного столбца вместо преобразования ячейки в текстовое поле всплывает форма, которую необходимо заполнить. Когда форма закрыта, введенные данные сохраняются в ячейке. Пользователь никогда не имеет возможности напрямую взаимодействовать с ячейкой, чтобы не повредить данные.

Посмотрите на картинку, у меня есть пользовательская таблица, с которой я хочу взаимодействовать. Там также случается, что где-то сидит книжный стол. Когда пользователь нажимает на столбец fav_books, появляется всплывающее окно, заполненное таблицей книг. Пользователь выбирает несколько книг, нажимает «ОК», и идентификаторы этих книг сохраняются в ячейке.

jqGrid Popup functionality

Пока что я просто заинтересован в том, чтобы всплывающее окно отображалось. custom_element и custom_value не помогают, потому что они превращают ячейку в возвращаемый элемент DOM. Я попытался использовать afterEditCell вот так (только для подтверждения концепции), но не смог сохранить ячейку:

grid.jqGrid({
...
afterEditCell: function(rowid, name,val,iRow,iCol){
    if(name=='fav_books'){
        alert("see my table?");
        //which one saves (edits?) the cell?
        //grid.jqGrid('setRowData',rowid,{fav_books: 'hi'});
        //grid.jqGrid('setCell',rowid, 'fav_books','hi',null,null,false);
        //grid.jqGrid('saveCell',iRow,iCol);
    }
},
...
});

Могу ли я завершить процесс редактирования ячейки внутри afterEditCell, или мне нужно будет иметь пользовательские функции для каждого события после afterEditCell? Есть ли способ сделать это уже встроенным в jqGrid (а я просто усложняю себе жизнь?)

1 Ответ

1 голос
/ 12 августа 2011

Прежде чем ответить на ваш прямой вопрос, я бы предложил вам взглянуть на старое демо из на вопрос . Этот и еще один ответ также относятся к той же теме.

Поэтому я предлагаю вам рассмотреть возможность использования опции multiple: true из editoptionsв связи с edittype:'select' и formatter:'select'.Таким образом, вы сможете реализовать ваши требования очень просто и так, чтобы они были очень близки к тому, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...