Kendo网格中的下拉列表输入

时间:2014-08-14 21:40:19

标签: jquery kendo-ui kendo-grid

我的问题的快速解释:我有一个可编辑的Kendo网格,其中一列是一个下拉列表,定义如下:

$('<input required data-text-field="fullName" data-value-field="approverGuid" data-bind="value:' + options.field + '"/>')
    .appendTo(container)
    .kendoDropDownList({
        index: 0,
        dataTextField: "fullName",
        dataValueField: "approverGuid",
        autoBind: false,
        dataSource: {
            transport: {
                read: {
                    dataType: 'json',
                    url: '/requisitions/ajax/getreqapprovers?account=' + accountNum
                }
            },
        },
        value: options.field
    });

我的问题是,在初始网格加载时,当我想显示fullName字段时,列只是一个常规文本元素,填充了approverGuid字段。一旦我在网格中单击,就会创建下拉列表,现在我们看到与我们之前看到的approverGuid相对应的正确fullName。我可以在我的下拉列表中选择任何名称,更新,并正确地将approverGuid写入我的数据库,但它也会恢复到我的网格中的approverGuid,因为dropdownlist元素已经消失。

有关如何最初显示名称的任何建议,而不会丢失更新我的数据库所需的Guid值吗?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你需要显示&#34; fullName&#34;而不是&#34; approverGuid&#34;

如果我希望您在dataSource中有一个模型定义。如果没有,请查看Kendo API MODEL

例如:

var dataSource = new kendo.data.DataSource({
  schema: {
    model: {
       id: "ID",
       fields: {
         ID: { editable: false, nullable: true },
         approverGuid: { type: "number", validation: { required: true } },
         fullName: { type: "string", validation: { required: true } }
    }
  }

一旦拥有模型,您就可以访问数据项目了,使用它可以为网格列定义模板

例如:

columns: [
        {
          field: "approverGuid",
          title: "approverGuid",
          template: function (dataItem) {
              var html = '<span class="">' + kendo.htmlEncode(dataItem.fullName) + '</span>';
                    return html;
          },
          editor: function (container, options) {
            $('<input required data-text-field="fullName" data-value-field="approverGuid" data-bind="value:' + options.field + '"/>')
            .appendTo(container)
             .kendoDropDownList({
                index: 0,
             dataTextField: "fullName",
             dataValueField: "approverGuid",
             autoBind: false,
             dataSource: {
               transport: {
                  read: {
                    dataType: 'json',
                    url: '/requisitions/ajax/getreqapprovers?account=' + accountNum
                }
             },
          },
          value: options.field
            });
           }
        }]

现在,模板将显示全名,一旦进入编辑模式,您将进入下拉列表。希望这有帮助