9

我有一个剑道网格。当页面加载时,默认情况下,我想按 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))
)
4

3 回答 3

13

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

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

.Sort(x =>
{
    x.Add(y=>y.DownloadDate).Descending();
    x.Add(y=>y.DueDate).Descending();
} 
于 2015-07-16T16:43:42.233 回答
1

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

.Sort(x =>
{
    x.Add(y=>y.DownloadDate).Descending();
    x.Add(y=>y.DueDate).Descending();
})
于 2019-11-01T12:02:02.400 回答
0

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

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

到: .Sortable(x=> x .SortMode(GridSortMode.MultipleColumn) .AllowUnsort(true) )

于 2017-06-20T20:56:27.750 回答