2014-03-13 22 views
1

我想弄清楚如何格式化绑定到动态数据源的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

事实证明,你可以自定义模板解决这个问题。这将运行每个值的格式。

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 
} 
+0

FormatValue需要是全局的。 –

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

我说的一样格式化货币,数千名等。 – TGH

+0

如果你想格式化货币字段,那么你必须输入你想要的格式,此值。就像如果你想显示你的货币像“10,000”那么你应该输入这个值,因为它是在数据库中。没有什么像KendoUI网格中的动态格式。 –