2017-05-30 39 views
0

我們在ASP.NET MVC中使用Kendo。我有一個有幾個不同列的Kendo網格。兩列包含時間。雖然它們是DateTime對象,但我們只顯示它們的時間組件。當用戶選擇過濾這些列中的一個以及空白文本輸入框時,他們有DatePicker,它允許他們按月/日選擇日期。顯然這對於​​一天的時間來說是沒有意義的。劍道壓制DatePicker

有沒有一種方法來取消DatePicker?理想情況下,他們可以使用TimePicker,但我們可以沒有它。我已經看過幾個例子,說明如何用JavaScript做到這一點,但沒有任何MVC。 MVC甚至可能嗎?

我們正在做服務器端(SQL服務器)的所有排序和篩選,因爲我們做服務器端分頁(我們不'想要加載1,000,000行,只是爲了顯示一些)。所以我們不依賴Kendo進行排序和過濾,只是UI。

我們試過的其他東西:

更改字符串的時間。這將擺脫DatePicker,但是然後篩選器選項包括對字符串有意義的運算符,但不一定是時間。時間操作員不見了(「之前」,「之後」等)。

自己構建過濾器選項:在將DateTimes更改爲字符串後,這是一個嘗試。這隻允許我們添加對字符串有意義的過濾器,而不是DateTimes。

下面是我們的Razor標記示例。相當標準的東西:

@(Html.Kendo().Grid<FModel>() 
    .Name("FStuff") 
    .Columns(c => 
    { 
     c.Bound(m => m.Date); 
     c.Bound(m => m.Location); 
     c.Bound(m => m.Name); 
     c.Bound(m => m.PurchaseOrderID); 
     c.Bound(m => m.Start);  // time column 
     c.Bound(m => m.End);  // time column 
    }) 
    .Pageable(p => p 
    .Enabled(true) 
    .PageSizes(new List<int> { 10, 25, 999 }) 
    .Refresh(true)) 
    ... other options ... 

有沒有人有我們應該採取的方法的想法?我們想要用劍道做什麼?

回答

1

你的時間列,配置.Filter()選項是這樣的:

c.Bound(x => x.Start).Filterable(f => f.UI(GridFilterUIRole.TimePicker)) 

您可能還需要考慮與.Format("{0:t}")(或任何格式你喜歡)

+0

運行完美設置格式,謝謝!還有一件事,有沒有辦法將TimePicker中的日期更改爲24小時格式(例如06:00,14:00,16:00等)? – Frecklefoot