Your search did not match any results.
DataGrid

Column Customization

Documentation
The DataGrid widget includes a comprehensive set of appearance and behavior customization options for individual grid columns. In this example, column selection, reordering, resizing and fixed columns are enabled and the following custom settings have been applied: custom alignment has been set for the Position column; a calculated value is displayed for the Employee column. The Employee column is also anchored to the grid’s left edge, so it is always displayed in the grid regardless of horizontal scrolling. You can disable the fixed column or fix a different column within the grid container using the column header’s context menu.
Copy to Plunker
Apply
Reset
<dx-data-grid id="gridContainer" [dataSource]="employees" [allowColumnReordering]="true" [allowColumnResizing]="true" [columnAutoWidth]="true"> <dxo-column-chooser [enabled]="true"></dxo-column-chooser> <dxo-column-fixing [enabled]="true"></dxo-column-fixing> <dxi-column caption="Employee" [width]="230" [fixed]="true" [calculateCellValue]="calculateCellValue" ></dxi-column> <dxi-column dataField="BirthDate" dataType="date"></dxi-column> <dxi-column dataField="HireDate" dataType="date"></dxi-column> <dxi-column dataField="Position" alignment="right"></dxi-column> <dxi-column dataField="Address" [width]="230"></dxi-column> <dxi-column dataField="City"></dxi-column> <dxi-column dataField="State"></dxi-column> <dxi-column dataField="Zipcode" [visible]="false"></dxi-column> <dxi-column dataField="HomePhone"></dxi-column> <dxi-column dataField="MobilePhone"></dxi-column> <dxi-column dataField="Skype"></dxi-column> <dxi-column dataField="Email"></dxi-column> </dx-data-grid>
import { NgModule, Component, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxDataGridModule } from 'devextreme-angular'; import { Service, Employee } from './app.service'; if(!/localhost/.test(document.location.host)) { enableProdMode(); } @Component({ selector: 'demo-app', templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'], providers: [Service] }) export class AppComponent { employees: Employee[]; constructor(service: Service) { this.employees = service.getEmployees(); } calculateCellValue(data) { return [data.Title, data.FirstName, data.LastName].join(" "); } } @NgModule({ imports: [ BrowserModule, DxDataGridModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
/deep/ #gridContainer { height: 440px; }
import { Injectable } from '@angular/core'; export class Employee { ID: number; FirstName: string; LastName: string; Position: string; BirthDate: string; HireDate: string; Title: string; Address: string; City: string; State: string; Zipcode: number; Email: string; Skype: string; HomePhone: string; DepartmentID: number; MobilePhone: string; } let employees: Employee[] = [{ "ID": 1, "FirstName": "John", "LastName": "Heart", "Position": "CEO", "BirthDate": "1964/03/16", "HireDate": "1995/01/15", "Title": "Mr.", "Address": "351 S Hill St.", "City": "Los Angeles", "State": "California", "Zipcode": 90013, "Email": "jheart@dx-email.com", "Skype": "jheartDXskype", "HomePhone": "(213) 555-9208", "DepartmentID": 6, "MobilePhone": "(213) 555-9392" },{ "ID": 2, "FirstName": "Olivia", "LastName": "Peyton", "Position": "Sales Assistant", "BirthDate": "1981/06/03", "HireDate": "2012/05/14", "Title": "Mrs.", "Address": "807 W Paseo Del Mar", "City": "Los Angeles", "State": "California", "Zipcode": 90036, "Email": "oliviap@dx-email.com", "Skype": "oliviapDXskype", "HomePhone": "(310) 555-2728", "DepartmentID": 5, "MobilePhone": "(818) 555-2387" }, { "ID": 3, "FirstName": "Robert", "LastName": "Reagan", "Position": "CMO", "BirthDate": "1974/09/07", "HireDate": "2002/11/08", "Title": "Mr.", "Address": "4 Westmoreland Pl.", "City": "Bentonville", "State": "Arkansas", "Zipcode": 91103, "Email": "robertr@dx-email.com", "Skype": "robertrDXskype", "HomePhone": "(818) 555-2438", "DepartmentID": 6, "MobilePhone": "(818) 555-2387" }, { "ID": 4, "FirstName": "Greta", "LastName": "Sims", "Position": "HR Manager", "BirthDate": "1977/11/22", "HireDate": "1998/04/23", "Title": "Ms.", "Address": "1700 S Grandview Dr.", "State": "Georgia", "City": "Atlanta", "Zipcode": 91803, "Email": "gretas@dx-email.com", "Skype": "gretasDXskype", "HomePhone": "(818) 555-0976", "DepartmentID": 5, "MobilePhone": "(818) 555-6546" }, { "ID": 5, "FirstName": "Brett", "LastName": "Wade", "Position": "IT Manager", "BirthDate": "1968/12/01", "HireDate": "2009/03/06", "Title": "Mr.", "Address": "1120 Old Mill Rd.", "State": "Idaho", "City": "Boise", "Zipcode": 91108, "Email": "brettw@dx-email.com", "Skype": "brettwDXskype", "HomePhone": "(626) 555-5985", "DepartmentID": 7, "MobilePhone": "(626) 555-0358" }, { "ID": 6, "FirstName": "Sandra", "LastName": "Johnson", "Position": "Controller", "BirthDate": "1974/11/15", "HireDate": "2005/05/11", "Title": "Mrs.", "Address": "4600 N Virginia Rd.", "State": "Utah", "City": "Beaver", "Zipcode": 90807, "Email": "sandraj@dx-email.com", "Skype": "sandrajDXskype", "HomePhone": "(562) 555-8272", "DepartmentID": 5, "MobilePhone": "(562) 555-2082" }, { "ID": 7, "FirstName": "Kevin", "LastName": "Carter", "Position": "Shipping Manager", "BirthDate": "1978/01/09", "HireDate": "2009/08/11", "Title": "Mr.", "Address": "424 N Main St.", "State": "California", "City": "San Diego", "Zipcode": 90012, "Email": "kevinc@dx-email.com", "Skype": "kevincDXskype", "HomePhone": "(213) 555-8038", "DepartmentID": 3, "MobilePhone": "(213) 555-2840" }, { "ID": 8, "FirstName": "Cynthia", "LastName": "Stanwick", "Position": "HR Assistant", "BirthDate": "1985/06/05", "HireDate": "2008/03/24", "Title": "Ms.", "Address": "2211 Bonita Dr.", "City": "Little Rock", "State": "Arkansas", "Zipcode": 90265, "Email": "cindys@dx-email.com", "Skype": "cindysDXskype", "HomePhone": "(818) 555-6808", "DepartmentID": 4, "MobilePhone": "(818) 555-6655" }, { "ID": 9, "FirstName": "Kent", "LastName": "Samuelson", "Position": "Ombudsman", "BirthDate": "1972/09/11", "HireDate": "2009/04/22", "Title": "Dr.", "Address": "12100 Mora Dr", "City": "St. Louis", "State": "Missouri", "Zipcode": 90272, "Email": "kents@dx-email.com", "Skype": "kentsDXskype", "HomePhone": "(562) 555-1328", "DepartmentID": 26, "MobilePhone": "(562) 555-9282" }, { "ID": 10, "FirstName": "Taylor", "LastName": "Riley", "Position": "Network Admin", "BirthDate": "1982/08/14", "HireDate": "2012/04/14", "Title": "Mr.", "Address": "7776 Torreyson Dr", "City": "San Jose", "State": "California", "Zipcode": 90012, "Email": "taylorr@dx-email.com", "Skype": "taylorrDXskype", "HomePhone": "(310) 555-9712", "DepartmentID": 5, "MobilePhone": "(310) 555-7276" }]; @Injectable() export class Service { getEmployees(): Employee[] { return employees; } }
// 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.5/css/dx.spa.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/17.1.5/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/17.1.5/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>