Как отобразить выпадающий с возможностью добавить элемент в JQgrid

У меня есть JQGrid, и я показываю раскрывающийся список в столбце, когда строка открыта для встроенного редактирования. Этот раскрывающийся список показывает уже доступные элементы списка из базы данных. Когда я сохраняю сетку из clientArray, обновленные данные сохраняются в базе данных.

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

Может ли кто-нибудь помочь в выяснении, есть ли возможность сделать раскрывающийся список с текстовым полем ввода, чтобы новый элемент мог быть добавлен в раскрывающийся список во время выполнения.

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

mygrid = jQuery("#list").jqGrid({
    url:url,
datatype: "json",
height: 'auto',
width: winW,        
colNames:['id','cusipNo','Account No.','Account Type','Location Memo','Account Coding'],
colModel:[
    {name:'Id',index:'stockRecordId',hidden:true,key: true,search: false},
    {name:'cusipNo',index:'cusipNo',hidden:true},   
    {name:'accountNo',index:'accountNo',sortable:true,search: false, align: 'left',editable: true, width: 90, editrules:{custom: true, custom_func: validateAccountNo }},
    {name:'accountType',index:'accountType',sortable:true,search: false, align: 'center',editable: true, width: 100},
    {name:'locationMemo',index:'locationMemo',sortable:true,search: false, align: 'center',editable: true, width: 110},
    {name:'accountCoding',index:'accountCoding',sortable:true,search: false,  align: 'left',editable: true, width: 370, edittype: 'select',
        editoptions: { dataUrl: accCodingUrl , 
                buildSelect: function (data) {
                    var sel = '<select>';
                    $.each(JSON.parse(data),function(i,accountCoding){
                    sel += '<option value="'+accountCoding.key+'">'+accountCoding.value+'</option>';
                        });
                    return sel + "</select>";
                }
            }
}],
cmTemplate: {editable: true},
multiselect: false,     
paging: true,
loadonce:true,
sortname: 'Id',
rowList: [],
rowNum:-1,
pager: $("#page"),      
viewrecords: false,
pgbuttons: false,
pgtext: null,

1 ответ

Если вы хотите, чтобы пользователи могли вводить данные в выборку, то вам нужен комбинированный список или ввод со списком данных:

https://jsfiddle.net/kzm7jq74/

Ваш выбранный код генерации будет переписан примерно так:

var sel = '<input type="text" list="accntCodes"/><datalist id="accntCodes">';
            $.each(JSON.parse(data),function(i,accountCoding){
            sel += '<option data-value="'+accountCoding.value+'" value="'+accountCoding.key+'">';
                });
            return sel + '</datalist>';

Если это не сработает, я бы порекомендовал поиск в Google для поиска в плагине комбинированного списка jquery, или посмотрите, может ли автозаполнение jquery работать на вас:

https://jqueryui.com/autocomplete/

ОБНОВИТЬ

Посмотрите эту скрипку о том, как добавить список данных в таблицу: https://jsfiddle.net/y3llowjack3t/a385ayau/1/

Другие вопросы по тегам