在多列上排序kendo网格

LP1*_*P13 9 kendo-grid kendo-asp.net-mvc kendo-sortable

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

问题: 按预期排序,但排序箭头显示在最后排序的列上.因此,在下面的情况下,当页面加载时,排序箭头位于"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))
)
Run Code Online (Sandbox Code Playgroud)

nic*_*o_c 12

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

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

.Sort(x =>
{
    x.Add(y=>y.DownloadDate).Descending());
    x.Add(y=>y.DueDate).Descending());
} 
Run Code Online (Sandbox Code Playgroud)