Как обновить выпадающий список в редакторе Kendo Grid Editor

Я новичок в использовании Kendo UI для JQuery,

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

Пожалуйста, найдите код ниже.

    $("#test").kendoGrid({
                        dataSource: entriesDataSource,
                        pageable: true,
                        sortable: true,
                        selectable: "single row",
                        columns: [
                            {
                                field: "RequiredText",
                                title: "Required Text",
                                editor: singleSelectRequiredTextEditor
                            },
                                { command: ["edit"], title: " " },
                        ],
                        editable: "popup"
                    });
                };


    var singleSelectRequiredTextEditor = function (container, options) {
                    $('<input data-bind="value:' + options.field + '"/>')
                        .appendTo(container)
                        .kendoDropDownList({
                            suggest: true,
                            dataSource: getRequiredTextList,
                        });
                };

    var getRequiredTextList = new kendo.data.DataSource({
        transport: {
            read: {
                url: $.getActionUrl('GetRequiredTextList'),
                dataType: "json",
                data: function () {
                    return {
                        param1: sname,
                        param2: rname
                    };
                }
            }
        }
    });

Любая помощь будет оценена по достоинству. Спасибо.


person arkay    schedule 11.03.2019    source источник


Ответы (2)


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

$("#test").kendoGrid({
                        dataSource: entriesDataSource,
                        pageable: true,
                        sortable: true,
                        selectable: "single row",
                        columns: [
                            {
                                field: "RequiredText",
                                title: "Required Text",
                                editor: singleSelectRequiredTextEditor
                            },
                                { command: ["edit"], title: "&nbsp;" },
                        ],
                        editable: "popup",
                        edit: function(e){
                            var ddl = e.container.find('[data-role=dropdownlist]').data('kendoDropDownList');
                            if(ddl){ 
                                ddl.dataSource.read();
                                ddl.open(); 
                            }
                        }
                    });

При повторном извлечении источника данных вашего раскрывающегося списка вы можете установить для параметра кеша значение false. См. пример ниже:

var getRequiredTextList = new kendo.data.DataSource({
        transport: {
            read: {
                url: $.getActionUrl('GetRequiredTextList'),
                cache:false,
                dataType: "json",
                data: function () {
                    return {
                        param1: sname,
                        param2: rname
                    };
                }
            }
        }
    });
person Cowbell    schedule 12.03.2019

Я предлагаю добавить событие редактирования сетки, а затем проверка того, является ли редактируемый столбец столбцом с раскрывающимся списком, с помощью e.container.cellIndex и обновление раскрывающегося списка.

edit: function(e) {
     if (e.container.cellIndex == 1) 
     {                                               
       e.container.find("input[name=Category]")
        .data("kendoDropDownList").refresh();
     }
},
person Marissa Fernandes    schedule 12.03.2019
comment
Спасибо за ваш ответ, у меня работает ответ @Cowbell :-) - person arkay; 12.03.2019