我是使用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
};
}
}
}
});
任何帮助,将不胜感激。谢谢。
您可能希望捕获网格上的编辑事件以检查它是否是下拉列表,然后执行数据源重新获取并触发下拉列表以弹出。示例如下:
$("#test").kendoGrid({
dataSource: entriesDataSource,
pageable: true,
sortable: true,
selectable: "single row",
columns: [
{
field: "RequiredText",
title: "Required Text",
editor: singleSelectRequiredTextEditor
},
{ command: ["edit"], title: " " },
],
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
};
}
}
}
});
我建议添加grid edit event然后通过使用e.container.cellIndex和refreshing下拉它来检查正在编辑的列是否是具有下拉列表的列。
edit: function(e) {
if (e.container.cellIndex == 1)
{
e.container.find("input[name=Category]")
.data("kendoDropDownList").refresh();
}
},