-
-
Notifications
You must be signed in to change notification settings - Fork 19
Sorting
Sorting on the client side is really easy, you simply need to enable sortable
(when not provided, it is considered as disabled) on each columns you want to sort and it will sort as a type string. Oh but wait, sorting as string might not always be ideal, what if we want to sort by number or by date? The answer is to simply pass a type
as shown below.
To use any of them, you need to import FieldType
from Aurelia-Slickgrid
as shown below. Also please note that FieldType.string
is the default and you don't necessarily need to define it, though you could if you wish to see it in your column definition.
import { FieldType } from 'aurelia-slickgrid';
export class Example {
columnDefinitions: Column[];
gridOptions: GridOption;
dataset: any[];
constructor() {
// define the grid options & columns and then create the grid itself
this.defineGrid();
}
defineGrid() {
this.columnDefinitions = [
{ id: 'title', name: 'Title', field: 'title', sortable: true },
{ id: 'duration', name: 'Duration (days)', field: 'duration', sortable: true, type: FieldType.number },
{ id: '%', name: '% Complete', field: 'percentComplete', sortable: true, type: FieldType.float},
{ id: 'start', name: 'Start', field: 'start', sortable: true, type: FieldType.dateIso },
{ id: 'finish', name: 'Finish', field: 'finish', sortable: true, type: FieldType.dateIso },
{ id: 'effort-driven', name: 'Effort Driven', field: 'effortDriven', sortable: true }
];
}
}
You can sort complex objects using the dot (.) notation inside the field
property defined in your Columns Definition.
For example, let say that we have this dataset
const dataset = [
{ item: 'HP Desktop', buyer: { id: 1234, address: { street: '123 belleville', zip: 123456 }},
{ item: 'Lenovo Mouse', buyer: { id: 456, address: { street: '456 hollywood blvd', zip: 789123 }}
];
We can now filter the zip code from the buyer's address using this filter:
this.columnDefinitions = [
{
// the zip is a property of a complex object which is under the "buyer" property
// it will use the "field" property to explode (from "." notation) and find the child value
id: 'zip', name: 'ZIP', field: 'buyer.address.zip', sortable: true
// id: 'street', ...
];
Contents
- Aurelia-Slickgrid Wiki
- Installation
- Styling
- Interfaces/Models
- Testing Patterns
- Column Functionalities
- Global Grid Options
- Localization
- Events
- Grid Functionalities
- Auto-Resize / Resizer Service
- Resize by Cell Content
- Add/Delete/Update or Highlight item
- Dynamically Change Row CSS Classes
- Column Picker
- Composite Editor Modal
- Context Menu
- Custom Tooltip
- Excel Copy Buffer
- Export to Excel
- Export to File (CSV/Txt)
- Grid Menu
- Grid State & Presets
- Grouping & Aggregators
- Header Menu & Header Buttons
- Header Title Grouping
- Pinning (frozen) of Columns/Rows
- Row Colspan
- Row Detail
- Row Selection
- Tree Data Grid
- SlickGrid & DataView objects
- Addons (controls/plugins)
- Backend Services