Kendo网格按可为null的属性排序

本文关键字:属性 排序 null 网格 Kendo | 更新日期: 2023-09-27 18:27:58

我正在使用Kendo网格的html助手来显示一些数据。网格使用的模型有一个DateTime可为null的属性,我想显示网格中按myDateTime属性降序排列的项目,首先显示null值。

我已经设法按降序显示了它们,但空值显示在最后。有什么想法吗?我该如何先显示null值,然后显示降序值?

@(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"))

Kendo网格按可为null的属性排序

我不认为你可以用其他方法来解决这个问题:

ViewModel:

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"))