Your search did not match any results.
Data Grid

Filtering

Documentation
The DataGrid widget ships with a built-in filter row — making it extremely easy to locate data within individual columns. In this example, the filter row is visible and its filter operations menu has been enabled. To activate the menu, click the spyglass button within the filter row. You’ll note that the City column is configured so that the list of available filter operands is restricted (Starts with, Contains, Equals) and that the menu for the Country column is disabled.

You can also search for a specific value in a column by using the column’s header filter. The filter dropdown displays items that represent unique column values.

Note: Another super-easy way to locate information within the DataGrid is to use the search panel (located above the grid). This feature allows you to find any record that matches values entered into the search field.
Apply
Reset
<dx-data-grid id="gridContainer" [dataSource]="orders"> <dxo-filter-row [visible]="showFilterRow" [applyFilter]="applyFilter.value"></dxo-filter-row> <dxo-header-filter [visible]="showHeaderFilter"></dxo-header-filter> <dxo-search-panel [visible]="true" [width]="240" placeholder="Search..."></dxo-search-panel> <dxi-column dataField="OrderNumber" [width]="130" caption="Invoice Number"> <dxo-header-filter [groupInterval]="10000"></dxo-header-filter> </dxi-column> <dxi-column dataField="OrderDate" alignment="right" dataType="date"> <dxo-header-filter [dataSource]="orderHeaderFilter"></dxo-header-filter> </dxi-column> <dxi-column dataField="SaleAmount" alignment="right" format="currency"> <dxo-header-filter [dataSource]="saleAmountHeaderFilter"></dxo-header-filter> </dxi-column> <dxi-column dataField="Employee"></dxi-column> <dxi-column dataField="CustomerStoreCity" caption="City"></dxi-column> <dxi-column dataField="CustomerStoreState" caption="State"></dxi-column> </dx-data-grid> <div class="options"> <div class="caption">Options</div> <div class="apply-filter option" [style.display]="showFilterRow ? 'block' : 'none'"> <span>Apply Filter</span> <dx-select-box #applyFilter id="useFilterApplyButton" [items]="applyFilterTypes" [value]="applyFilterTypes[0].key" valueExpr="key" displayExpr="name"></dx-select-box> </div> <div class="option"> <dx-check-box text="Filter Row" [(value)]="showFilterRow" (onValueChanged)="clearFilter()"></dx-check-box> </div> <div class="option"> <dx-check-box text="Header Filter" [(value)]="showHeaderFilter" (onValueChanged)="clearFilter()"></dx-check-box> </div> </div>
import { NgModule, Component, ViewChild } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxDataGridComponent, DxDataGridModule, DxSelectBoxModule, DxCheckBoxModule } from 'devextreme-angular'; import { Order, Service } from './app.service'; @Component({ selector: 'demo-app', providers: [ Service ], templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'] }) export class AppComponent { @ViewChild(DxDataGridComponent) dataGrid: DxDataGridComponent; orders: Order[]; saleAmountHeaderFilter: any; applyFilterTypes: any; showFilterRow: boolean; showHeaderFilter: boolean; constructor(service: Service) { this.orders = service.getOrders(); this.showFilterRow = true; this.showHeaderFilter = true; this.applyFilterTypes = [{ key: "auto", name: "Immediately" }, { key: "onClick", name: "On Button Click" }]; this.saleAmountHeaderFilter = [{ text: "Less than $3000", value: ["SaleAmount", "<", 3000] }, { text: "$3000 - $5000", value: [ ["SaleAmount", ">=", 3000], ["SaleAmount", "<", 5000] ] }, { text: "$5000 - $10000", value: [ ["SaleAmount", ">=", 5000], ["SaleAmount", "<", 10000] ] }, { text: "$10000 - $20000", value: [ ["SaleAmount", ">=", 10000], ["SaleAmount", "<", 20000] ] }, { text: "Greater than $20000", value: ["SaleAmount", ">=", 20000] }]; this.orderHeaderFilter = this.orderHeaderFilter.bind(this); } getOrderDay(rowData) { return (new Date(rowData.OrderDate)).getDay(); } orderHeaderFilter(data) { data.dataSource.postProcess = (results) => { results.push({ text: "Weekends", value: [ [this.getOrderDay, "=", 0], "or", [this.getOrderDay, "=", 6] ] }); return results; }; } clearFilter() { this.dataGrid.instance.clearFilter(); } } @NgModule({ imports: [ BrowserModule, DxDataGridModule, DxSelectBoxModule, DxCheckBoxModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
/deep/ #gridContainer { height: 440px; } /deep/ .options { padding: 20px; margin-top: 20px; background-color: #f5f5f5; } /deep/ .caption { font-size: 18px; font-weight: 500; } /deep/ .option { margin-top: 10px; } /deep/ .option > span { margin-right: 10px; } /deep/ .option > .dx-selectbox { display: inline-block; vertical-align: middle; }
import { Injectable } from '@angular/core'; export class Order { ID: number; OrderNumber: number; OrderDate: string; SaleAmount: number; Terms: string; CustomerStoreState: string; CustomerStoreCity: string; Employee: string; } let orders: Order[] = [{ "ID": 1, "OrderNumber": 35703, "OrderDate": "2014/04/10", "SaleAmount": 11800, "Terms": "15 Days", "CustomerStoreState": "California", "CustomerStoreCity": "Los Angeles", "Employee": "Harv Mudd" }, { "ID": 4, "OrderNumber": 35711, "OrderDate": "2014/01/12", "SaleAmount": 16050, "Terms": "15 Days", "CustomerStoreState": "California", "CustomerStoreCity": "San Jose", "Employee": "Jim Packard" }, { "ID": 5, "OrderNumber": 35714, "OrderDate": "2014/01/22", "SaleAmount": 14750, "Terms": "15 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Las Vegas", "Employee": "Harv Mudd" }, { "ID": 7, "OrderNumber": 35983, "OrderDate": "2014/02/07", "SaleAmount": 3725, "Terms": "15 Days", "CustomerStoreState": "Colorado", "CustomerStoreCity": "Denver", "Employee": "Todd Hoffman" }, { "ID": 9, "OrderNumber": 36987, "OrderDate": "2014/03/11", "SaleAmount": 14200, "Terms": "15 Days", "CustomerStoreState": "Utah", "CustomerStoreCity": "Salt Lake City", "Employee": "Clark Morgan" }, { "ID": 11, "OrderNumber": 38466, "OrderDate": "2014/03/01", "SaleAmount": 7800, "Terms": "15 Days", "CustomerStoreState": "California", "CustomerStoreCity": "Los Angeles", "Employee": "Harv Mudd" }, { "ID": 14, "OrderNumber": 39420, "OrderDate": "2014/02/15", "SaleAmount": 20500, "Terms": "15 Days", "CustomerStoreState": "California", "CustomerStoreCity": "San Jose", "Employee": "Jim Packard" }, { "ID": 15, "OrderNumber": 39874, "OrderDate": "2014/02/04", "SaleAmount": 9050, "Terms": "30 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Las Vegas", "Employee": "Harv Mudd" }, { "ID": 18, "OrderNumber": 42847, "OrderDate": "2014/02/15", "SaleAmount": 20400, "Terms": "30 Days", "CustomerStoreState": "Wyoming", "CustomerStoreCity": "Casper", "Employee": "Todd Hoffman" }, { "ID": 19, "OrderNumber": 43982, "OrderDate": "2014/05/29", "SaleAmount": 6050, "Terms": "30 Days", "CustomerStoreState": "Utah", "CustomerStoreCity": "Salt Lake City", "Employee": "Clark Morgan" }, { "ID": 29, "OrderNumber": 56272, "OrderDate": "2014/02/06", "SaleAmount": 15850, "Terms": "30 Days", "CustomerStoreState": "Utah", "CustomerStoreCity": "Salt Lake City", "Employee": "Clark Morgan" }, { "ID": 30, "OrderNumber": 57429, "OrderDate": "2014/05/16", "SaleAmount": 11050, "Terms": "30 Days", "CustomerStoreState": "Arizona", "CustomerStoreCity": "Phoenix", "Employee": "Clark Morgan" }, { "ID": 32, "OrderNumber": 58292, "OrderDate": "2014/05/13", "SaleAmount": 13500, "Terms": "15 Days", "CustomerStoreState": "California", "CustomerStoreCity": "Los Angeles", "Employee": "Harv Mudd" }, { "ID": 36, "OrderNumber": 62427, "OrderDate": "2014/01/27", "SaleAmount": 23500, "Terms": "15 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Las Vegas", "Employee": "Harv Mudd" }, { "ID": 39, "OrderNumber": 65977, "OrderDate": "2014/02/05", "SaleAmount": 2550, "Terms": "15 Days", "CustomerStoreState": "Wyoming", "CustomerStoreCity": "Casper", "Employee": "Todd Hoffman" }, { "ID": 40, "OrderNumber": 66947, "OrderDate": "2014/03/23", "SaleAmount": 3500, "Terms": "15 Days", "CustomerStoreState": "Utah", "CustomerStoreCity": "Salt Lake City", "Employee": "Clark Morgan" }, { "ID": 42, "OrderNumber": 68428, "OrderDate": "2014/04/10", "SaleAmount": 10500, "Terms": "15 Days", "CustomerStoreState": "California", "CustomerStoreCity": "Los Angeles", "Employee": "Harv Mudd" }, { "ID": 43, "OrderNumber": 69477, "OrderDate": "2014/03/09", "SaleAmount": 14200, "Terms": "15 Days", "CustomerStoreState": "California", "CustomerStoreCity": "Anaheim", "Employee": "Harv Mudd" }, { "ID": 46, "OrderNumber": 72947, "OrderDate": "2014/01/14", "SaleAmount": 13350, "Terms": "30 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Las Vegas", "Employee": "Harv Mudd" }, { "ID": 47, "OrderNumber": 73088, "OrderDate": "2014/03/25", "SaleAmount": 8600, "Terms": "30 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Reno", "Employee": "Clark Morgan" }, { "ID": 50, "OrderNumber": 76927, "OrderDate": "2014/04/27", "SaleAmount": 9800, "Terms": "30 Days", "CustomerStoreState": "Utah", "CustomerStoreCity": "Salt Lake City", "Employee": "Clark Morgan" }, { "ID": 51, "OrderNumber": 77297, "OrderDate": "2014/04/30", "SaleAmount": 10850, "Terms": "30 Days", "CustomerStoreState": "Arizona", "CustomerStoreCity": "Phoenix", "Employee": "Clark Morgan" }, { "ID": 56, "OrderNumber": 84744, "OrderDate": "2014/02/10", "SaleAmount": 4650, "Terms": "30 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Las Vegas", "Employee": "Harv Mudd" }, { "ID": 57, "OrderNumber": 85028, "OrderDate": "2014/05/17", "SaleAmount": 2575, "Terms": "30 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Reno", "Employee": "Clark Morgan" }, { "ID": 59, "OrderNumber": 87297, "OrderDate": "2014/04/21", "SaleAmount": 14200, "Terms": "30 Days", "CustomerStoreState": "Wyoming", "CustomerStoreCity": "Casper", "Employee": "Todd Hoffman" }, { "ID": 60, "OrderNumber": 88027, "OrderDate": "2014/02/14", "SaleAmount": 13650, "Terms": "30 Days", "CustomerStoreState": "Utah", "CustomerStoreCity": "Salt Lake City", "Employee": "Clark Morgan" }, { "ID": 65, "OrderNumber": 94726, "OrderDate": "2014/05/22", "SaleAmount": 20500, "Terms": "15 Days", "CustomerStoreState": "California", "CustomerStoreCity": "San Jose", "Employee": "Jim Packard" }, { "ID": 66, "OrderNumber": 95266, "OrderDate": "2014/03/10", "SaleAmount": 9050, "Terms": "15 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Las Vegas", "Employee": "Harv Mudd" }, { "ID": 69, "OrderNumber": 98477, "OrderDate": "2014/01/01", "SaleAmount": 23500, "Terms": "15 Days", "CustomerStoreState": "Wyoming", "CustomerStoreCity": "Casper", "Employee": "Todd Hoffman" }, { "ID": 70, "OrderNumber": 99247, "OrderDate": "2014/02/08", "SaleAmount": 2100, "Terms": "15 Days", "CustomerStoreState": "Utah", "CustomerStoreCity": "Salt Lake City", "Employee": "Clark Morgan" }, { "ID": 78, "OrderNumber": 174884, "OrderDate": "2014/04/10", "SaleAmount": 7200, "Terms": "30 Days", "CustomerStoreState": "Colorado", "CustomerStoreCity": "Denver", "Employee": "Todd Hoffman" }, { "ID": 81, "OrderNumber": 188877, "OrderDate": "2014/02/11", "SaleAmount": 8750, "Terms": "30 Days", "CustomerStoreState": "Arizona", "CustomerStoreCity": "Phoenix", "Employee": "Clark Morgan" }, { "ID": 82, "OrderNumber": 191883, "OrderDate": "2014/02/05", "SaleAmount": 9900, "Terms": "30 Days", "CustomerStoreState": "California", "CustomerStoreCity": "Los Angeles", "Employee": "Harv Mudd" }, { "ID": 83, "OrderNumber": 192474, "OrderDate": "2014/01/21", "SaleAmount": 12800, "Terms": "30 Days", "CustomerStoreState": "California", "CustomerStoreCity": "Anaheim", "Employee": "Harv Mudd" }, { "ID": 84, "OrderNumber": 193847, "OrderDate": "2014/03/21", "SaleAmount": 14100, "Terms": "30 Days", "CustomerStoreState": "California", "CustomerStoreCity": "San Diego", "Employee": "Harv Mudd" }, { "ID": 85, "OrderNumber": 194877, "OrderDate": "2014/03/06", "SaleAmount": 4750, "Terms": "30 Days", "CustomerStoreState": "California", "CustomerStoreCity": "San Jose", "Employee": "Jim Packard" }, { "ID": 86, "OrderNumber": 195746, "OrderDate": "2014/05/26", "SaleAmount": 9050, "Terms": "30 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Las Vegas", "Employee": "Harv Mudd" }, { "ID": 87, "OrderNumber": 197474, "OrderDate": "2014/03/02", "SaleAmount": 6400, "Terms": "30 Days", "CustomerStoreState": "Nevada", "CustomerStoreCity": "Reno", "Employee": "Clark Morgan" }, { "ID": 88, "OrderNumber": 198746, "OrderDate": "2014/05/09", "SaleAmount": 15700, "Terms": "30 Days", "CustomerStoreState": "Colorado", "CustomerStoreCity": "Denver", "Employee": "Todd Hoffman" }, { "ID": 91, "OrderNumber": 214222, "OrderDate": "2014/02/08", "SaleAmount": 11050, "Terms": "30 Days", "CustomerStoreState": "Arizona", "CustomerStoreCity": "Phoenix", "Employee": "Clark Morgan" }]; @Injectable() export class Service { getOrders(): Order[] { return orders; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular 2 and DevExtreme here: // https://github.com/DevExpress/devextreme-angular/blob/master/README.md System.config({ transpiler: 'ts', typescriptOptions: { module: "commonjs", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" } }, paths: { 'npm:': 'https://unpkg.com/' }, map: { 'ts': 'npm:plugin-typescript@7.0.6/lib/plugin.js', 'typescript': 'npm:typescript@2.2.2/lib/typescript.js', '@angular/core': 'npm:@angular/core@4.1.0/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@4.1.0/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@4.1.0/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@4.1.0/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@4.1.0/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http@4.1.0/bundles/http.umd.js', '@angular/router': 'npm:@angular/router@4.1.0/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@4.1.0/bundles/forms.umd.js', 'rxjs': 'npm:rxjs@5.3.1', 'devextreme': 'npm:devextreme@17.1', 'jquery': 'npm:jquery@3.1.1/dist/jquery.min.js', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'devextreme-angular': 'npm:devextreme-angular@17.1' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme-angular': { main: 'index.js', defaultExtension: 'js' } } });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/17.1.3/css/dx.spa.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/17.1.3/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/17.1.3/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/zone.js@0.6.25/dist/zone.js"></script> <script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script> <script src="https://unpkg.com/systemjs@0.19.31/dist/system.js"></script> <script src="config.js"></script> <script> System.import('app').catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>