在动态Kendo网格中格式化值

时间:2014-03-13 04:21:04

标签: javascript asp.net kendo-grid

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

据我所知,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}}]

2 个答案:

答案 0 :(得分:2)

事实证明,您可以使用自定义模板解决此问题。这将在每个值上运行格式化。

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 
}

答案 1 :(得分:1)

如果要绑定动态数据源,则无需在列或场中格式化值。它会自动调整数据。 你应该使用这种模式

                    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" },
                        ],