如何将两个字段组合成Kendo UI自动完成控件的数据文本字段?

8

我希望将Kendo自动完成组合的数据文本字段属性设置为两个字段。

我的数据源有一个名字(FirstName)字段和一个姓氏(LastName)字段。

schema: {
            data: "d",
            model: {
                id: "PersonId",
                fields: {
                    PersonId: {
                        type: "number",
                        editable: false // this field is not editable
                    },
                    FirstName: {
                        type: "text",
                        validation: { // validation rules
                            required: true // the field is required
                        }
                    },
                    LastName: {
                        type: "text",
                        validation: { // validation rules
                            required: true // the field is required
                        }
                    }
                }
            }
        }

有没有一种方式可以配置自动完成以显示名字和姓氏?

也许我需要对数据源进行一些操作,如果是这种情况,能否提供一个简单的示例?

谢谢!


请注意:仅“string”、“number”、“boolean”和“date”是“type”字段的有效值。http://docs.kendoui.com/api/framework/model#model.define - Kevin Babcock
2个回答

9
你应该使用模板(template):
例如:
template:"The name is : #= FirstName # #=LastName #"

3
这只修改了下拉列表项的模板,当选择一个项目时它并不会改变组合框的值。你该如何做到这一点? - gyozo kudor
模板仅用于显示数据,而不是绑定数据。您可以尝试类似于 此处 的操作。使用 dataBound 事件将项目绑定到它们的行中。请注意,这种方法会影响性能,因为每次更改后,整个网格都会重新绘制。 - Petur Subev

8

使用模板是一种有效的解决方案。但是,如果您希望始终可以在模型上访问复合或计算字段,则可以在模式定义中定义解析函数

schema: {
    data: "d",
    model: {
        id: "PersonId",
        fields: {
            PersonId: {
                type: "number",
                editable: false // this field is not editable
            },
            FirstName: {
                type: "string",
                validation: { // validation rules
                    required: true // the field is required
                }
            },
            LastName: {
                type: "string",
                validation: { // validation rules
                    required: true // the field is required
                }
            },
            Name: {
                type: "string"
                // add any other requirements for your model here
            }
        }
    },
    parse: function (response) {
        var values = response.d,
            n = values.length,
            i = 0,
            value;
        for (; i < n; i++) {
            value = values[i];
            value.Name = kendo.format("{0} {1}",
                value.FirstName,
                value.LastName);
        }

        return response;
    }
}

解析函数在服务器响应被使用之前进行预处理,因此您可以修改现有字段或附加新字段。然后,您可以直接引用这些字段,以便在使用模型的任何控件中使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接