Чтобы сделать ComboBox (input type select) в форме редактирования jqGrid нужно поставить в colModel для этой колонки свойства:
1 2 |
editable : true, edittype : 'select', |
Затем нужно добавить в editoptions dataUrl и dataInit. В dataUrl нужно прописать url, который будет возвращать кусок HTML:
1 2 3 4 5 |
<select> <option value="v1">label1</option> <option value="v2">label2</option> ... </select> |
А в dataInit нужно добавить обработчик событий на наш select, который будет устанавливать в поле с id значение из select. То есть наш select будет отображать надпись, а другое скрытое поле будет хранить id.
Пример:
1 2 3 4 5 6 7 8 |
editoptions : { dataUrl : '.../myselect', dataInit : function (el) { $(el).on("change", function () { $("#myId").val($("#myDescr").val()); }); } } |
Здесь myId — это name из colModel колонки, которая хранит id нашего поля, а myDescr — это name из colModel колонки, которая хранит отображаемую надпись.
Полный пример выглядит так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
... { label :'myId', name : 'myId', editable : true, hidden : true, editrules : { edithidden : false } }, { label : 'My descr', name : 'myDescr', editable : true, edittype : 'select', editoptions : { dataUrl : '.../myselect', dataInit : function (el) { $(el).on("change", function () { $("#myId").val($("#myDescr").val()); }); } } } ... |
Колонка myId не отображается в таблице и в форме редактирования. Но она в них присутствует и отсылается на сервер при submit-е формы редактирования.
Это, конечно, только отрывок кода. Но основная идея такая.