Kendo网格按可空属性排序

时间:2014-10-25 15:28:02

标签: c# asp.net-mvc-4 kendo-ui kendo-grid kendo-asp.net-mvc

我正在使用Kendo网格的html帮助器来显示一些数据。网格使用的模型具有DateTime nullable属性,我希望以myDateTime属性降序显示网格中的项目,首先使用空值。

我设法将它们显示为有序降序,但最后显示空值。任何想法如何首先显示空值,然后显示降序排序值?

@(Html.Kendo().Grid<MyVm>()
          .Name("myGrid")
          .Columns(columns =>
          {
              columns.Bound(m => m.myDateProperty);
          })
          .Sortable()
          .DataSource(dataSource => dataSource
              .Ajax()
              .Sort(s => s.Add("myDateProperty").Descending())
              .Model(model => model.Id(a => a.Id))
              .ServerOperation(false)
                  .Read("myMethod", "myController"))

1 个答案:

答案 0 :(得分:1)

我认为你不能以任何其他方式解决这个问题:

视图模型:

public class GridViewModel{
    public DateTime? myDateProperty { get; set; }
    public DateTime myDateProperty_filter { get {return myDateProperty.HasValue ? myDateProperty.Value : DateTime.MaxValue} ; }
}

控制器:

JsonResult myMethod([DataSourceRequest] DataSourceRequest request){
    //get your data and convert it to GridViewModel
    List<GridViewModel> models = getModel();
    return Json(models.ToDataSourceResult(request));
}

查看:

@(Html.Kendo().Grid<GridViewModel>()
      .Name("myGrid")
      .Columns(columns =>
      {
          columns.Bound(m => m.myDateProperty_filter).ClientTemplate("#= myDateProperty #");
      })
      .Sortable()
      .DataSource(dataSource => dataSource
          .Ajax()
          .Sort(s => s.Add("myDateProperty_filter").Descending())
          .Model(model => model.Id(a => a.Id))
          .ServerOperation(false)
              .Read("myMethod", "myController"))