在KendoGrid中创建一个未绑定到数据源的列

Bav*_*ell 3 kendo-ui

我正在使用Kendo UI将数据源绑定到Kendo Grid.我试图找到在网格中创建绑定到数据源的列的最佳方法.

目前,我创建数据源中的一个字段,并使用一些JavaScript和jQuery数据从远程端点读取之后,以设置列的值.

数据源:

schema: {
    model: {
        fields: {
            blah: {},
            empty_column: {}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

网格:

columns: {
    field: "empty_column",
    width: 100,
    title: "Empty"
}
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

datasource.data[item].set("empty_column", computed_value);
Run Code Online (Sandbox Code Playgroud)

所有代码都是为了简洁而编辑的,一切正常.

我的问题:有没有办法为这个未连接到远程端点的新空列设置defaultValue?当我设置:

empty_column: {defaultValue: "None"}
Run Code Online (Sandbox Code Playgroud)

网格仍显示"未定义",我认为因为它在读取操作中没有收到该字段的任何数据.有没有办法在网格中设置defaultValue?我没见过这个例子......

Ona*_*Bai 7

defaultValue 在创建记录时应用,而不是在将要显示时.

你可以做:

选项1:使用parseschema.fields.fieldName会是这样的.

model: {
    fields: {
        empty_column: {
            type        : "string",
            defaultValue: "none",
            parse       : function (data) {
                if (!data.empty_columns) {
                    data.empty_column = "none";
                }
                return data;
            }
        },
        blah        : { type: "number" }
    }
},
Run Code Online (Sandbox Code Playgroud)

选项2:使用schema.parse添加额外的字段值.

            schema: {
                model: {
                    fields: {
                        empty_column: {type: "string", defaultValue: "none"},
                        blah        : { type: "number" }
                    }
                },
                parse: function (response) {
                    $.each(response, function (idx, item) {
                        if (!item.empty_column) {
                            item.empty_column = "none";
                        }
                    });
                    return response;
                }
            }
Run Code Online (Sandbox Code Playgroud)

当然,(对于这两个选项)如果你当然知道没有先前的值,empty_column你可以保存测试条件并只保留赋值.