簡體   English   中英

在多列上對劍道網格進行排序

[英]Sorting kendo grid on multiple columns

我有一個劍道網格。 當頁面加載時,默認情況下我想按 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))
)

您當前添加列進行排序的方式基本上會覆蓋上一列,並且只考慮您編寫的最后一列(在本例中為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();
})

如果您想讓用戶可以選擇按多列排序和/或取消排序,請進行以下更改:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM