【发布时间】:2016-05-05 15:34:42
【问题描述】:
这是一个常见问题,但我不知道如何使用 KendoUI 小部件和 Javascript 解决此问题。 我有一个 KendoGrid,其数据源来自对 Web 服务的 AJAX 调用。 数据绑定到列。两列(Source 和 Destination)是两个下拉列表:
每一列定义为
if (stringStartsWith(colTitle, 'Source')) {
columns.push({
field: dataItem.replace(/\s+/g, ''),
title: colTitle,
width: 150,
locked: false,
editor: sourceDropDownEditor,
//template: "#=SourcetankIdentifier#",
attributes: { style: "text-align: left" },
type: "text"
});
}
SourceDropDownEditor 如下:
function sourceDropDownEditor(container, options) {
$('<input id="sourcesDropDownList" required data-text-field="Source" data-value-field="Source" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
dataTextField: "Source",
dataValueField: "Source",
dataSource: Sources
});
}
目的地下拉列表也是如此。
现在,我想要的是,当用户单击“编辑”按钮(网格是使用内联编辑定义的)并从源 DDL 中选择某个源值时;目标 DDL 中的列表必须根据此值更改。
我编写了一个函数来检索正确的列表,这取决于在源 DDL 中选择的值。但我不能做的是获取该行的目标 DLL 并相应地设置数据源。
根据要求提供更多详细信息:
网格是动态构建的:
function generateGrid(JSONData) {
var model = generateModel(JSONData, selectedMenu);
var columns = generateColumns(model);
var data = generateData(gridData, columns);
var grid = $("#mainGrid").kendoGrid({
edit: function (e) {
..
},
dataSource: {
data: data,
schema: {
model: model
},
sort: {
field: defaultSort.replace(/\s+/g, ''),
dir: "desc"
}
},
toolbar: [
..
],
columns: columns,
editable: "inline",
sortable: true,
resizable: true,
filterable: true,
selectable: "multiple",
cancel: function(e) {
$('#mainGrid').data('kendoGrid').dataSource.cancelChanges();
},
剑道道场
这里dojo.telerik.com/uXeKa。它基本上反映了网格模板和列字段
最终解决方案
最终解决方案在这里:dojo.telerik.com/uXeKa/2。 不需要在 Grid 的 Edit 功能中添加任何内容。只需要实现Source DDL的onChange函数,并设置目标的数据源。
【问题讨论】:
-
能否提供更多代码?我要求它识别以下内容, 1. 下拉菜单在正常模式或编辑模式下显示。 2.你如何将数据源绑定到下拉列表。
-
1.下拉菜单在编辑模式下显示。 2. 数据源“Sources”是一个静态数组,它被绑定到“SourceDDL”中,如第二段代码中所述。而第一段代码是 Grid 定义中描述的“generateColumns”方法的一部分。
-
我真的开始相信,这实际上是不可能实现的。因为数据源实际上是绑定到“列”,而不是每一行中的元素。
-
我很抱歉,但我现在不在城里,所以很可能会在周五尝试解决您的问题。
-
我不确定是否可以通过内联编辑完成...但如果没有内联编辑,它可以完成。
标签: jquery kendo-ui telerik kendo-grid kendo-dropdown