剑道网格按可空属性排序

Posted

技术标签:

【中文标题】剑道网格按可空属性排序【英文标题】:Kendo grid sort by nullable property 【发布时间】:2014-12-21 05:49:16 【问题描述】:

我正在使用 Kendo 网格的 html 助手来显示一些数据。网格使用的模型具有 DateTime 可为空的属性,我想在网格中显示按 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】:

我认为您无法以任何其他方式执行此解决方法:

视图模型:

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

【讨论】:

以上是关于剑道网格按可空属性排序的主要内容,如果未能解决你的问题,请参考以下文章

在空的剑道网格上排序显示旧数据

禁用剑道网格

Angular 2 - 剑道 UI 网格。排序实现的问题

剑道网格自定义列菜单

剑道网格弹出显示

如何为单个剑道网格列设置最大宽度属性?