2014-03-13 57 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網格中的動態格式。 –