Grid Row Sorting
Enable Sorting
Grid sorting by single column is enabled by setting thesorting.enabled property to true. You can then sort a column by clicking on the column header.
const gridOptions = {
dataSourceSettings: {
dataFields: [
{ name: 'firstName', dataType: 'string' },
{ name: 'lastName', dataType: 'string' },
{ name: 'productName', map: 'product.name', dataType: 'string' },
{ name: 'quantity', map: 'product.quantity', dataType: 'number' },
{ name: 'price', map: 'product.price', dataType: 'number' },
{ name: 'total', map: 'product.total', dataType: 'number' }
]
},
behavior: {
columnResizeMode: 'growAndShrink'
},
sorting: {
enabled: true
},
dataSource: [
{
firstName: 'Andrew',
lastName: 'Burke',
product: {
name: 'Ice Coffee', price: 10, quantity: 3, total: 30
}
},
{
firstName: 'Petra',
lastName: 'Williams',
product: {
name: 'Espresso', price: 7, quantity: 5, total: 35
}
},
{
firstName: 'Kevin',
lastName: 'Baker',
product: {
name: 'Frappucino', price: 6, quantity: 4, total: 24
}
}
],
columns: [
{ label: 'First Name', dataField: 'firstName', allowSort: false },
{ label: 'Last Name', dataField: 'lastName' },
{ label: 'Product', dataField: 'productName' },
{ label: 'Quantity', dataField: 'quantity', cellsAlign: 'right' },
{ label: 'Unit Price', dataField: 'price', cellsAlign: 'right', cellsFormat: 'c2' }
]
}

Disable Column Sorting
Disable sorting for columns by setting the allowSort column definition to false.
Sort Column when you create the Grid
You can use thesorting.sort property. The property expects an Array with key-value pairs. The key is the column's dataField, the value is the sort order - 'asc' or 'desc'.
sorting: {
enabled: true,
sort: [
{ 'lastName': 'asc' }
]
}
Sort Multiple Columns
It is possible to sort by multiple columns
sorting: {
enabled: true,
mode: 'many',
sort: [
{ 'lastName': 'asc' },
{ 'productName': 'desc' }
]
}

If you want to sort by multiple columns only while you hold the 'Control' key, you can set the
sorting.commandKey property to Control.
sorting: {
enabled: true,
mode: 'many',
commandKey: 'Control',
sort: [
{ 'lastName': 'asc' },
{ 'productName': 'desc' }
]
}
Clear Sorting API
To clear the sorting, you can use theclearSort() method.
grid.clearSort();
Sort by Column API
To sort by a column, you can use thesortBy(dataField, sortOrder) method.
grid.sortBy('productName', 'desc');
Custom Sort
Custom sorting can be configured by using the column'ssortComparator(value1, value2) function.
Example:
const gridOptions = {
dataSourceSettings: {
dataFields: [
{ name: 'firstName', dataType: 'string' },
{ name: 'lastName', dataType: 'string' },
{ name: 'productName', map: 'product.name', dataType: 'string' },
{ name: 'quantity', map: 'product.quantity', dataType: 'number' },
{ name: 'price', map: 'product.price', dataType: 'number' },
{ name: 'total', map: 'product.total', dataType: 'number' }
]
},
behavior: {
columnResizeMode: 'growAndShrink'
},
sorting: {
enabled: true
},
dataSource: [
{
firstName: 'Andrew',
lastName: 'Burke',
product: {
name: 'Ice Coffee', price: 10, quantity: 3, total: 30
}
},
{
firstName: 'Petra',
lastName: 'Williams',
product: {
name: 'Espresso', price: 7, quantity: 5, total: 35
}
},
{
firstName: 'Kevin',
lastName: 'Baker',
product: {
name: 'Frappucino', price: 6, quantity: 4, total: 24
}
}
],
columns: [
{ label: 'First Name', dataField: 'firstName' },
{ label: 'Last Name', dataField: 'lastName' },
{ label: 'Product', dataField: 'productName' },
{
label: 'Quantity', dataField: 'quantity', cellsAlign: 'right', sortOrder: 'asc',
sortComparator: (value1, value2) => {
const result = value1 === value2;
// When the value is 4, it will bubble up.
if (value1 === 4) {
return -1;
}
if (value2 === 4) {
return 1;
}
// return 0 for equal values.
if (result) {
return 0;
}
// return -1, if value1 is smaller than value2.
if (value1 < value2) {
return -1;
}
// return 1, if value1 is greater than value2.
return 1;
}
},
{ label: 'Unit Price', dataField: 'price', cellsAlign: 'right', cellsFormat: 'c2' }
]
}
For AI tooling
Developer Quick Reference
Topic: grid-row-sort Component: Grid Framework: JavaScript
Main methods: clearSort(), sortBy()
Common config keys: behavior, sorting, dataSource, columns
Implementation Notes
Compatibility: Modern browsers / Web Components API access pattern: const component = document.querySelector(...) + component.method()
Lifecycle guidance: Initialize configuration first, then invoke imperative API when element is available in DOM.
Common pitfalls:
- Calling methods before element initialization.
- Reassigning large configuration partially without understanding merge behavior.
- Missing required module script import for component type.
Validation checklist:
- Ensure module scripts and CSS are loaded once.
- Keep data schema aligned with columns/series definitions.
- Verify method calls target initialized component instance.