【问题标题】:Sorting kendo grid on multiple columns在多列上对剑道网格进行排序
【发布时间】:2015-10-04 22:30:00
【问题描述】:

我有一个剑道网格。当页面加载时,默认情况下,我想按 column1 然后按 column2 降序对网格进行排序。

问题: 它按预期排序,但是排序箭头显示在最后一个排序的列上。因此,在以下情况下,当页面加载时,排序箭头位于“DueDate”而不是“DownloadDate”

 @(Html.Kendo().Grid<TrackingVM>()
    .Name("Grid")
    .Columns(col =>
    {
        col.Bound(p => p.ID).Hidden();
        col.Bound(p => p.Year);
        col.Bound(p => p.State);                        
        col.Bound(p => p.DueDate).Format("{0:MM/dd/yyyy}");
        col.Bound(p => p.DownloadDate).Format("{0:MM/dd/yyyy}");            
    })
    .AutoBind(false)
    .Pageable(x => x.PageSizes(UISettings.PageSizes))
    .Sortable(x => x.AllowUnsort(false))
    .Resizable(resizing => resizing.Columns(true))
    .Scrollable(s => s.Height("auto"))
    .DataSource(dataSource => dataSource
        .Ajax()            
        .Sort(x => x.Add(y=>y.DownloadDate).Descending()).Sort(x=>x.Add(y=>y.DueDate).Descending())
        .Read(read => read
            .Action("GetData", "Tracking"))
    .ServerOperation(false))
)

【问题讨论】:

  • 为什么不对数据源本身进行排序,或者在 kendogrid 中排序?

标签: kendo-grid kendo-asp.net-mvc kendo-sortable


【解决方案1】:

您当前添加列进行排序的方式基本上会覆盖前一列,并且只考虑您编写的最后一列(在本例中为DueDate)。发生这种情况是因为您的 .Sort() 是作为一个单一语句编写的。

为了让您的排序正常工作,您应该将您的 .Sort() 更改为:

.Sort(x =>
{
    x.Add(y=>y.DownloadDate).Descending();
    x.Add(y=>y.DueDate).Descending();
} 

【讨论】:

    【解决方案2】:

    建议的答案中有语法错误。排序语句应该是:

    .Sort(x =>
    {
        x.Add(y=>y.DownloadDate).Descending();
        x.Add(y=>y.DueDate).Descending();
    })
    

    【讨论】:

      【解决方案3】:

      如果您希望用户可以选择按多列排序和/或取消排序,请进行以下更改:

      来自: .Sortable(x => x.AllowUnsort(false))

      到: .可排序(x=> x .SortMode(GridSortMode.MultipleColumn) .AllowUnsort(true) )

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多