【问题标题】:Kendo cell values from dropdownlist shows as undefined when not in edit mode不处于编辑模式时,下拉列表中的 Kendo 单元格值显示为未定义
【发布时间】:2015-12-29 12:35:35
【问题描述】:

我正在研究 Kendo UI 网格,并且我实现了下拉列表(用于编辑模式(显示弹出窗口))。当我的网格加载时,总是为每个在编辑模式下使用下拉列表的单元格显示“未定义”值。一切都很好,如果我使用添加/编辑模式来插入/更新值。我不知道我的代码有什么问题。这是我的代码的一部分:

 columns: [{
            field: "Id",
            title: "Id",
            width: 50
        }, {
            field: "finNaturalBusinessYearId",
            title: "Poslovna godina",
            width: 70,
            template: "#= finNaturalBusinessYearId.NaturalBusinessYear #",
            editor: businessyeardropdown
        },...

下拉列表的功能:

function businessyeardropdown(container, options) {
        $('<input required data-text-field="NaturalBusinessYear" data-value-field="Id" data-bind="value:' + options.field + '"/>')
        .appendTo(container)
        .kendoDropDownList({
            autobind: false,
            dataSource: {
                transport: {
                    read:
                    {
                        url: "/api/BusinessYear",
                        type: "GET",
                        dataType: "json"
                    }
                }
            }
        });
    }

请帮忙...

【问题讨论】:

    标签: javascript kendo-ui kendo-grid


    【解决方案1】:

    这是因为对象 finNaturalBusinessYearId 不包含属性 NaturalBusinessYear

    这里是Dojo example - 如您所见,如果我使用了不存在的属性,值将显示为“未定义”,但如果属性存在,则会出现值。

    所以请检查,如果

    1. finNaturalBusinessYearId 是一个对象
    2. 如果是对象,则检查是否包含属性 NaturalBusinessYear

    【讨论】:

    • 在我的例子中 finNaturalBusinessYearId 是一个外键。在添加/编辑模式下,我有正确的值。我正在使用link 示例和类似的,例如link
    • 在这两种情况下你都提到它是一个对象。在第一种情况下,您有 "Category": { CategoryName: "Condiments", CategoryID: 2 }, 这就是您可以将 Category.CategoryName 写入模板的原因。如果 finNaturalBusinessYearId 是外键,那么它只是值(而不是对象)对吗?我不知道您如何加载数据,但我希望通过 ajax - 所以尝试返回包含值作为您的 Id 和值的对象,然后您将能够编写 object.Value ...
    • 在编辑模式下它可以正确显示,因为下拉菜单有自己的数据源,并且您返回的对象列表具有属性 Id 和 NaturalBusinessYear - 以及它正确显示的原因。
    【解决方案2】:

    我想我也遇到了同样的问题。 改变这个:

    $('<input required data-text-field="NaturalBusinessYear" data-value-field="Id" data-bind="value:' + options.field + '"/>')
    

    到这里:

    $('<input required data-text-field="finNaturalBusinessYearId" data-value-field="Id" data-bind="value:' + options.field + '"/>')
    

    这样它与您的数据源中的字段名称匹配

    【讨论】:

      猜你喜欢
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多