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);
}
},
首先我要为我拙劣的英语道歉。
我目前正在试验 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);
}
},