DxGridDataColumn.SortMode Property
Specifies how the Grid sorts column data (by values, by display text, or custom logic is used).
Namespace: DevExpress.Blazor
Assembly: DevExpress.Blazor.v24.2.dll
NuGet Package: DevExpress.Blazor
Declaration
[DefaultValue(GridColumnSortMode.Default)]
[Parameter]
public GridColumnSortMode SortMode { get; set; }
Property Value
Type | Default | Description |
---|---|---|
GridColumnSortMode | Default | An enumeration value. |
Available values:
Name | Description |
---|---|
Default | If the column editor is a combo box with specified text and value field names, the Grid sorts column data by display text. Otherwise, the Grid sorts column data by values. |
Value | The Grid sorts column data by values. |
DisplayText | The Grid sorts column data by display text. |
Custom | In this mode, the CustomSort event occurs every time the Grid compares two column values. Handle this event to implement a custom value comparison algorithm. |
Remarks
You can sort Grid data by values, display text, or a custom sorting algorithm.
Default Sort Mode
The Grid sorts column data by values unless the column editor is a combo box editor with specified text and value field names. In the latter case, the Grid sorts column data by display text strings.
In the following code snippet, all columns use the default sort mode. The Grid sorts the Category column by display text and sorts the Unit Price column by values:
@inject IDbContextFactory<NorthwindContext> NorthwindContextFactory
<DxGrid Data="Products">
<Columns>
<DxGridCommandColumn />
<DxGridDataColumn FieldName="ProductName" Width="25%" />
<DxGridDataColumn FieldName="CategoryId" SortIndex="0">
<EditSettings>
<DxComboBoxSettings Data="Categories"
ValueFieldName="CategoryId"
TextFieldName="CategoryName" />
</EditSettings>
</DxGridDataColumn>
<DxGridDataColumn FieldName="UnitPrice" DisplayFormat="c" SortIndex="1" />
<DxGridDataColumn FieldName="Discontinued" />
</Columns>
</DxGrid>
@code {
NorthwindContext Northwind { get; set; }
List<Product> Products { get; set; }
List<Category> Categories { get; set; }
protected override async Task OnInitializedAsync() {
Northwind = NorthwindContextFactory.CreateDbContext();
Products = await Northwind.Products.ToListAsync();
Categories = await Northwind.Categories.ToListAsync();
}
public void Dispose() {
Northwind?.Dispose();
}
}
Sort Data by Values
Set a column’s SortMode
property to Value
to sort column data by values. The Grid sorts column data differently depending on the data type:
- Date-time values
- From earliest to most recent.
- Text strings
- In alphabetical order.
- Numeric values
- From smallest to largest.
The following code snippet sorts column data by values:
<DxGrid Data="Products">
<Columns>
<!-- ... -->
<DxGridDataColumn FieldName="UnitPrice"
DisplayFormat="c"
SortIndex="0"
SortMode="GridColumnSortMode.Value" />
</Columns>
</DxGrid>
Sort Data by Display Text
Set a column’s SortMode
property to DisplayText
to compare column values by characters. In this mode, 10
and 100
values appear before 2
.
Note
When the Grid component is bound to a Server Mode data source or GridDevExtremeDataSource, the component sorts data in all columns by values.
The following code snippet activates the DisplayText
mode for the Unit Price column:
<DxGrid Data="Products">
<Columns>
<!-- ... -->
<DxGridDataColumn FieldName="UnitPrice"
DisplayFormat="c"
SortIndex="0"
SortMode="GridColumnSortMode.Value" />
</Columns>
</DxGrid>
Custom Sorting
Follow the steps below to implement a custom sorting algorithm:
- Set the column’s
SortMode
property toCustom
. - Handle the Grid’s CustomSort event and implement a custom value comparison algorithm. Use event arguments to access column values and other grid data.
Note
When the Grid component is bound to a Server Mode data source or GridDevExtremeDataSource, the component sorts data in all columns by values.
The following code snippet implements custom logic to sort the Order Date column’s values without taking into account the year part of the date.
@using Microsoft.EntityFrameworkCore
@inject IDbContextFactory<NorthwindContext> NorthwindContextFactory
@implements IDisposable
<DxGrid Data="GridDataSource"
CustomSort="OnCustomSort">
<Columns>
<DxGridDataColumn FieldName="OrderDate"
DisplayFormat="d"
SortIndex="1"
SortMode="GridColumnSortMode.Custom"/>
<DxGridDataColumn FieldName="ShipName" />
<DxGridDataColumn FieldName="ShipCity" />
<DxGridDataColumn FieldName="Freight"
DisplayFormat="n2"/>
</Columns>
</DxGrid>
@code {
object GridDataSource { get; set; }
NorthwindContext Northwind { get; set; }
protected override void OnInitialized() {
Northwind = NorthwindContextFactory.CreateDbContext();
GridDataSource = Northwind.Orders.ToList();
}
void OnCustomSort(GridCustomSortEventArgs e) {
if(e.FieldName == "OrderDate") {
var date1 = Convert.ToDateTime(e.Value1);
var date2 = Convert.ToDateTime(e.Value2);
if(date1.Month == date2.Month)
e.Result = date1.Day.Compare(date2.Day);
else
e.Result = date1.Month.Compare(date2.Month);
e.Handled = true;
}
}
public void Dispose() {
Northwind?.Dispose();
}
}
For more information about data sorting in the Grid component, refer to the following topic: Sort Data in Blazor Grid.