Kendo ui grid dropdownlist填充对象对象

时间:2014-02-23 12:06:43

标签: cakephp kendo-ui kendo-grid kendo-dropdown

我正在尝试使用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: "&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”,“name”: “供应商”}}}

/ Partners / get_partner_type'返回以下内容: [{“PartnerType”:{“id”:“1”,“name”:“Customer”}},{“PartnerType”:{“id”:“2”,“name”:“Vendor”}}] < / p>

有人会分享吗?

2 个答案:

答案 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: "&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",
                      }    
                },


            },

        });
} 

答案 1 :(得分:0)

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

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

我在填充数据源时通过设置字段的默认值(如果为null)解决了这个问题。

选择  列1,  列2,  ISNULL(ParterName,&#39;&#39;)AS ParterName FROM TableName