动态剑道网格中值的格式化

Formatting of values in dynamic Kendo grid

本文关键字:格式化 网格 动态      更新时间:2023-09-26

我试图弄清楚如何在绑定到动态数据源的剑道网格中格式化单个值。挑战在于列不是固定的,整个列的格式甚至不一致。

据我所知Kendo使用

支持列级别的格式字符串
columns:[{field:Name,format:{1:c}}]

但是这个解决方案并不合适,因为它设置了整个列的格式。

我也发现了一个基于模板的解决方案,让你手动格式化你的数据使用这样的符号

columns:[{field:Name,template: "#= kendo.toString(kendo.parseDate(SomeDate, 'yyyy-MM-dd')}]

但是,这对我来说还是太硬了,因为它假设列中只有一个类型。

我正在寻找一种方法来指定在数据源本身是什么类型的值。这可能吗?

像这样

data = [{field:SomeField,Value:4,Format:{1:c}}]

您可以使用自定义模板解决这个问题。这将对每个值运行格式化。

for (var c = 0; c < grid.Cols.length; c++) {
    grid.Cols[c].template = "#= FormatValue(" + grid.Cols[c].field + ")#";
}

function FormatValue(value) {
    return kendo.toString(value, "c0")//currency formatting 
}

如果要绑定动态数据源,则不需要格式化列或字段中的值。它会根据数据自动调整。您应该使用以下模式

                    fields: {
                                EventID: { editable: true, nullable: false },
                                EventName: { validation: { required: true} },
                                UserID: { validation: { required: true} },
                                EventDate: {  validation: { required: true} },
                                EventTimeFrom: { validation: { required: true} },
                                EventTimeTo: {  validation: { required: true} }
                            }
               columns: [
                        { field: "EventID", title: "Event ID" },
                        { field: "EventName", title: "Event Name" },
                        { field: "UserID", title: "User ID" },
                        { field: "EventDate", title: "Event Date" },
                        { field: "EventTimeFrom", title: "Start Time" },
                        { field: "EventTimeTo", title: "End Time" },
                        ],