1

我正在尝试实现 Cakephp kendo ui grid dropdownlist 来编辑列partner_type_id但卡住了导致 dropdownlist populate [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: "&nbsp;", 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","名称":"供应商"} } ]

/Partners/get_partner_type' 返回如下: [ {"PartnerType":{"id":"1","name":"Customer"}}, {"PartnerType":{"id":"2","name" :“小贩”}} ]

有人愿意分享吗?

4

2 回答 2

0

看起来您遇到了文件名称不匹配问题,编辑器名称应与您的情况下的网格字段名称匹配,该字段是

Patner { PatnerId,PatnerName;}

因此,通过您的代码使其保持一致,如下所示,其他明智的编辑器列将保持显示 [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"} }


}

});

$("#grid").kendoGrid({
  dataSource: dataSource,               
    columns: [

    { field: "Partner.PatnerName"},
    { field: "Partner", 
         editor: categoryDropDownEditortemplate: "#= Partner.PatnerName #"
    },
    { command: ["edit"], title: "&nbsp;", 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",
                      }    
                },


            },

        });
} 
于 2014-02-24T12:32:39.990 回答
0

在具有可编辑下拉列表的剑道网格中,问题在于网格数据源中下拉列表字段的值。(不是下拉列表的数据源)。

如果该字段的值为 null,则在您尝试编辑它时会显示 [object Object]。

在填充数据源时,我通过为字段设置默认值(如果为 null)来解决它。

SELECT Column1, Column2, ISNULL(ParterName, '') AS ParterName FROM TableName

于 2014-05-02T17:55:28.673 回答