Kendo UI 网格。 DropDown 不显示预选值作为默认值

Kendo UI Grid. DropDown does not show the pre-selected value as default

首先我要为我拙劣的英语道歉。

我目前正在试验 Kendo UI,更具体地说是网格。

我有列 "id"、"event"、"database"、"address" 和 "eventtype"(已简化)。

columns: [
{field: "id", hidden: true},
{field: "event", hidden: false, title: "Event"},
{field: "database", hidden: false, title: "Database", width: 100},
{field: "address", hidden: false, title: "Address", width: 100},
{field: "eventtype", hidden: false, title: "Event Type", editor: eventtypeDropDownEditor},
{command: ["destroy", "edit"],  hidden: false, width: 200}],

所有这些都是常见的文本输入和按钮,除了 eventtype。事件类型存储在单独的 table(id 和 eventtype(string))中。

eventtypeDropDownEditor如下

 function eventtypeDropDownEditor(container, options) {
$('<input data-text-field="eventtype" data-value-field:"id" data-bind="value:' + options.field+ '"/>')
    .appendTo(container)
    .kendoDropDownList ({
        autoBind: false,
        dataTextField: "eventtype",
        dataValueField:"id",
        dataSource: {
            transport: {
                read: "https://some.url/default/ajax/geteventtype",
                dataType: "json"
            }
        },
    });

};

被调用的数据源URL传递了一个JSON喜欢

[{"id":"0","eventtype":"placeholder0"},{"id":"1","eventtype":"placeholder1"},{"id":"2","eventtype":"placeholder2"},{"id":"6","eventtype":"placeholder3"}]

到目前为止,还不错。编辑、删除、创建工作完美。

我唯一的问题(现在 6 小时)是在启用编辑后在我的列 eventtype 中显示相应的事件类型。

换句话说:如果我单击 "edit" 按钮,eventtype "placeholder1" 下显示的文本将变为下拉列表。但是,下拉列表不是预 selecting "placeholder1",而是空的。我必须手动单击下拉菜单并选择其中一个选项。例如,即使我只想更改数据库,我也总是必须 select 事件类型才能为我的查询提供有效值。

在测试不同的解决方案时,我偶然发现了 index 选项。奇怪的是,这个也不起作用。也不会更改 data-bind 值。

我猜这是某种 "greater" 错误,阻止了任何类型的选项按预期在该上下文中工作。但我根本找不到解决方案或 "direction" 无法进一步调查。

我真的很感激一个解决方案或 "hint" 就此而言!

问候 马塞尔

我想问题出在 data-bind="value=' + options.field+ '" 中的等号。

尝试更改为 data-bind="value:' + options.field+ '"

我找到了解决方案。 我没有在字段定义中调用函数 eventtypeDropDownEditor,而是直接在其中定义编辑器。

    {field: "eventtype", title: "Event Type",
    editor: function(container) {
        var input = $('<select id="eventtype" name="eventtype">');
        input.appendTo(container);
        input.kendoDropDownList({
            dataTextField: "eventtype",
            dataValueField: "eventtype",
            dataSource: {
                transport: {
                    read: "https://some.url/default/ajax/geteventtype",
                    dataType: "json"
                }
            }
        }).appendTo(container);
    }
},