Cakephp 剑道ui网格下拉列表填充对象对象
我试图实现Cakephp kendo ui grid dropdownlist来编辑ColumPartner_type_id,但由于dropdownlist填充[object][object]而卡住 这是我的代码:Cakephp 剑道ui网格下拉列表填充对象对象,cakephp,kendo-ui,kendo-grid,kendo-dropdown,Cakephp,Kendo Ui,Kendo Grid,Kendo Dropdown,我试图实现Cakephp kendo ui grid dropdownlist来编辑ColumPartner_type_id,但由于dropdownlist填充[object][object]而卡住 这是我的代码: $(function() { var dataSource = new kendo.data.DataSource({ batch: true, pageSize:10, transport: {
$(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,效果很好
/合作伙伴/获取合作伙伴回报如下:
[{合伙人:{id:1,姓名:詹姆斯国王,合伙人类型{id:2},合伙人类型:{id:2,姓名:卖方}]
/合作伙伴/获取合作伙伴类型返回如下:
[{PartnerType:{id:1,名称:Customer},{PartnerType:{id:2,名称:Vendor}]
有人愿意分享吗 看起来您遇到了文件名不匹配问题 编辑器名称应与网格字段名称匹配 在您的情况下,字段是 帕特纳{ 帕特尼德, PatnerName; } 因此,请在代码中保持一致,如下所示,其他wise editor列将保持显示[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:"PartnerID",
Patner: { defaultValue: { PartnerID: 1, PatnerName: "Jhon Doe"} }
}
})
在具有可编辑dropdownlist的剑道网格中,问题在于网格数据源中dropdownlist字段的值。不是dropdownlist的数据源 如果该字段的值为空,则当您尝试编辑它时,它将显示[object] 我通过在填充数据源时为字段设置一个默认值(如果为null)来解决这个问题 挑选 第1栏, 第2栏, 是零ParterName,作为ParterName
从TableName中,你能举例说明你的下拉列表服务返回了什么吗?这里是屏幕截图:我的意思是JSON。。。如果在浏览器中打开…/Partners/get\u partner\u type,JSON是什么样子的?我的理论是,问题在于JSON的结构,它不仅是字符串数组,而且是对象。但是在数据源定义中,您既没有指定也没有指定,因此KendoUI无法显示正确的信息[{Partner:{id:1,name:King James,Partner_type_id:2},PartnerType:{id:2,name:Vendor}][{PartnerType:{id:1,name:Customer},{PartnerType:{id:2,name:Vendor}]您的JSON无效,您将返回两个数组而不是一个数组。您能检查一下您的服务吗?[{合作伙伴:{id:1,姓名:King James,合作伙伴类型{id:2,姓名:Vendor}}][{合作伙伴类型:{id:1,姓名:Customer}},{合作伙伴类型:{id:2,姓名:Vendor}]
$("#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",
}
},
},
});
}