如何刷新Kendo Grid Editor中的下拉列表

问题描述 投票:0回答:2

我是使用Kendo UI for 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
                    };
                }
            }
        }
    });

任何帮助,将不胜感激。谢谢。

kendo-ui kendo-grid kendo-treeview kendo-dropdown kendo-datasource
2个回答
0
投票

您可能希望捕获网格上的编辑事件以检查它是否是下拉列表,然后执行数据源重新获取并触发下拉列表以弹出。示例如下:

$("#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
                    };
                }
            }
        }
    });

0
投票

我建议添加grid edit event然后通过使用e.container.cellIndex和refreshing下拉它来检查正在编辑的列是否是具有下拉列表的列。

edit: function(e) {
     if (e.container.cellIndex == 1) 
     {                                               
       e.container.find("input[name=Category]")
        .data("kendoDropDownList").refresh();
     }
},
© www.soinside.com 2019 - 2024. All rights reserved.