Сортировка сетки кендо по нескольким столбцам

У меня есть сетка кендо. Когда страница загружается, по умолчанию я хочу отсортировать сетку по столбцу 1, а затем по столбцу 2 в порядке убывания.

Проблема: сортировка выполняется правильно, однако стрелка сортировки отображается в последнем отсортированном столбце. Таким образом, в случае ниже, когда страница загружается, стрелка сортировки находится на "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))
)

2 ответа

То, как вы в настоящее время добавляете столбцы для сортировки, в основном переопределяет предыдущий столбец и учитывает только последний столбец, который вы пишете (DueDate в этом случае). Это происходит потому, что ваш .Sort() написано как одно утверждение

Чтобы ваша сортировка работала правильно, вы должны изменить .Sort() чтобы:

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

В предложенном ответе есть синтаксическая ошибка. Оператор сортировки должен быть:

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

Если вы хотите, чтобы пользователи могли по выбору сортировать по нескольким столбцам и / или не сортировать, внесите следующие изменения:

from:.Sortable (x => x.AllowUnsort (false))

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

Другие вопросы по тегам