2017-05-30 69 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