DevExtreme Angular - OData
To access an OData service, implement the ODataStore: specify the url of an OData entity collection, the key property, and the OData version. You can also handle data-related events:
jQuery
index.js
$(function() { var productsStore = new DevExpress.data.ODataStore({ url: "https://js.devexpress.com/Demos/DevAV/odata/Products", key: "Product_ID", version: 3, onLoaded: function() { // Event handling commands go here } }); $("#dataGridContainer").dxDataGrid({ dataSource: productsStore }); });
Angular
app.component.ts
app.module.ts
app.component.html
import { Component } from '@angular/core'; import ODataStore from 'devextreme/data/odata/store'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { productsStore: ODataStore; constructor() { this.productsStore = new ODataStore({ url: 'https://js.devexpress.com/Demos/DevAV/odata/Products', key: 'Product_ID', version: 3, onLoaded: () => { // Event handling commands go here } }); } }
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { DxDataGridModule } from 'devextreme-angular'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, DxDataGridModule ], providers: [ ], bootstrap: [AppComponent] }) export class AppModule { }
<dx-data-grid [dataSource]="productsStore"> </dx-data-grid>
Vue
App.vue
<template> <DxDataGrid :data-source="productsStore" /> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxDataGrid from 'devextreme-vue/data-grid'; import ODataStore from 'devextreme/data/odata/store'; const productsStore = new ODataStore({ url: 'https://js.devexpress.com/Demos/DevAV/odata/Products', key: 'Product_ID', version: 3, onLoaded: () => { // Event handling commands go here } }); export default { components: { DxDataGrid }, data() { return { productsStore } } } </script>
React
App.js
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import DataGrid from 'devextreme-react/data-grid'; import ODataStore from 'devextreme/data/odata/store'; const productsStore = new ODataStore({ url: 'https://js.devexpress.com/Demos/DevAV/odata/Products', key: 'Product_ID', version: 3, onLoaded: () => { // Event handling commands go here } }); class App extends React.Component { render() { return ( <DataGrid dataSource={productsStore} /> ); } } export default App;
Data from the ODataStore can be shaped (filtered, sorted, grouped, etc.) in the DataSource.
The following example declares an ODataStore, wraps it in a DataSource, and binds the DataGrid UI component to this DataSource:
jQuery
index.js
$(function() { var productsStore = new DevExpress.data.ODataStore({ // ... }); var productsDataSource = new DevExpress.data.DataSource({ store: productsStore, sort: "Product_Name" }); $("#dataGridContainer").dxDataGrid({ dataSource: productsDataSource }); });
Angular
app.component.ts
app.module.ts
app.component.html
import { Component } from '@angular/core'; import ODataStore from 'devextreme/data/odata/store'; import DataSource from 'devextreme/data/data_source'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { productsDataSource: DataSource; constructor() { const productsStore = new ODataStore({ // ... }); this.productsDataSource = new DataSource({ store: productsStore, sort: 'Product_Name' }); } }
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { DxDataGridModule } from 'devextreme-angular'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, DxDataGridModule ], providers: [ ], bootstrap: [AppComponent] }) export class AppModule { }
<dx-data-grid [dataSource]="productsDataSource"> </dx-data-grid>
Vue
App.vue
<template> <DxDataGrid :data-source="productsDataSource" /> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxDataGrid from 'devextreme-vue/data-grid'; import ODataStore from 'devextreme/data/odata/store'; import DataSource from 'devextreme/data/data_source'; const productsStore = new ODataStore({ // ... }); const productsDataSource = new DataSource({ store: productsStore, sort: 'Product_Name' }); export default { components: { DxDataGrid }, data() { return { productsDataSource } } } </script>
React
App.js
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import DataGrid from 'devextreme-react/data-grid'; import ODataStore from 'devextreme/data/odata/store'; import DataSource from 'devextreme/data/data_source'; const productsStore = new ODataStore({ // ... }); const productsDataSource = new DataSource({ store: productsStore, sort: 'Product_Name' }); class App extends React.Component { render() { return ( <DataGrid dataSource={productsDataSource} /> ); } } export default App;
Feel free to share topic-related thoughts here.
If you have technical questions, please create a support ticket in the DevExpress Support Center.
Thank you for the feedback!
If you have technical questions, please create a support ticket in the DevExpress Support Center.