[英]Multiple sort on Kendo Grid columns / DataSource - set sorting dynamically
[英]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.