i have a kendo grid. When the page loads, by default i want to sort the grid by column1 then by column2 in descending order.
Issue: Its sorting as expected however sort arrow shows up on last sorted column. So in the case below when the page loads the sort arrow is on "DueDate" instead of "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))
)
Grid with mixed column sorting enabled To multi-sort the columns, hold the "CTRL" key and click the columns header. A single-click (without holding the "CTRL" key) on any column un-sorts the currently sorted columns and applies single-sorting to the clicked column.
To enable the sorting when the kendoGridBinding directive is applied: Set the sortable option of the Grid. (Optional) Set the sort property to a collection of SortDescriptor objects. This allows you to sort the data by specific criteria during the initialization of the Grid.
To enable grouping, set the groupable option to true . As a result, the Grid exposes a new area in its header which enables the user to group the Grid data by a column. To group the data by multiple columns, users can drag the desired columns to the grouping header. $("#grid").
With the Kendo UI grid you can enable filter row in its header by setting the grid's filterable->mode property to row.
There is a syntax error in the proposed answer. Sort statement should be:
.Sort(x =>
{
x.Add(y=>y.DownloadDate).Descending();
x.Add(y=>y.DueDate).Descending();
})
The way you're currently adding columns to sort basically overrides the previous column and only takes into account the last column that you write (DueDate
in this case). This happens because your .Sort()
is written as one single statement.
To get your sorting to work properly you should change your .Sort()
to:
.Sort(x =>
{
x.Add(y=>y.DownloadDate).Descending();
x.Add(y=>y.DueDate).Descending();
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With