我试图弄清楚如何在绑定到动态数据源的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}}]
答案 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" },
],