我正在尝试使用Cakephp kendo ui grid下拉列表来编辑列partner_type_id
,但卡住了下拉列表填充[object][object]
。
这是我的代码:
$(function() {
var dataSource = new kendo.data.DataSource({
batch: true,
pageSize:10,
transport: {
read: {
url:"<?php echo $this->Html->url('/Partners/get_partner',true)?>",
dataType:"json",
}
},
schema: {
id:"Partner.id",
}
});
$("#grid").kendoGrid({
dataSource: dataSource,
columns: [
{ field: "Partner.name"},
{ field: "Partner.partner_type_id",
template: "#: PartnerType.name #", editor: categoryDropDownEditor
},
{ command: ["edit"], title: " ", width: "182px" }
],
toolbar: ["create", "save", "cancel","destroy"],
height: 400,
navigatable: true,
pageable: {
refresh: true,
pageSizes:true
},
editable:"inline" ,
filterable: {
extra: false,
operators: {
string: {
startswith: "Starts with",
eq: "Is equal to",
neq: "Is not equal to"
}
}
},
});
function categoryDropDownEditor(container, options) {
$('<input required required data-text-field="PartnerType.name" data-value-field="Partner.id" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: false,
dataSource: {
transport: {
read: {
url:"<?php echo $this->Html->url('/Partners/get_partner_type',true)?>",
dataType:"json",
}
},
},
});
}
});
如你所知我使用嵌套的JSon,是不是有问题?我尝试使用相同代码的本机PHP和MySql(平面Json)并且运行良好。
/ Partners / get_partner返回以下内容: [{“Partner”:{“id”:“1”,“name”:“King James”,“partner_type_id”:“2”},“PartnerType”:{“id”:“2”,“name”: “供应商”}}}
/ Partners / get_partner_type'返回以下内容: [{“PartnerType”:{“id”:“1”,“name”:“Customer”}},{“PartnerType”:{“id”:“2”,“name”:“Vendor”}}] < / p>
有人会分享吗?
答案 0 :(得分:0)
看起来您提出了名称不匹配问题 编辑器名称应与网格字段名称匹配 在你的情况下,该字段是
Patner { PatnerId, PatnerName; }
所以通过你的代码使这个一致,如下面的其他明智的编辑器列将保持显示[对象对象]因为它无法找到正确的属性名称
$(function() {
var dataSource = new kendo.data.DataSource({
batch: true,
pageSize:10,
transport: {
read: {
url:"<?php echo $this->Html->url('/Partners/get_partner',true)?>",
dataType:"json",
}
},
schema: {
id:"PartnerID",
Patner: { defaultValue: { PartnerID: 1, PatnerName: "Jhon Doe"} }
}
});
$("#grid").kendoGrid({
dataSource: dataSource,
columns: [
{ field: "Partner.PatnerName"},
{ field: "Partner",
editor: categoryDropDownEditortemplate: "#= Partner.PatnerName #"
},
{ command: ["edit"], title: " ", width: "182px" },
],
function categoryDropDownEditor(container, options) {
$('<input required required data-text-field="PatnerName" data-value-field="PartnerID" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: false,
dataSource: {
transport: {
read: {
url:"<?php echo $this->Html->url('/Partners/get_partner_type',true)?>",
dataType:"json",
}
},
},
});
}
答案 1 :(得分:0)
在具有可编辑下拉列表的kendo网格中,问题在于网格数据源中下拉列表字段的值。 (不是下拉列表的数据源)。
如果字段的值为null,则在您尝试编辑时会显示[object Object]。
我在填充数据源时通过设置字段的默认值(如果为null)解决了这个问题。
选择 列1, 列2, ISNULL(ParterName,&#39;&#39;)AS ParterName FROM TableName