Angular MultiView - Customize Item Appearance
To customize views in the MultiView, define an itemTemplate.
jQuery
var multiViewItems = [{ title: "Personal Data", data: { firstName: "John", lastName: "Smith", birthYear: 1986 } }, { title: "Contacts", data: { phone: "(555)555-5555", email: "John.Smith@example.com" } }]; $(function() { $("#multiViewContainer").dxMultiView({ dataSource: multiViewItems, itemTemplate: function(itemData, itemIndex, itemElement) { var container = $("<div style='margin:25px;'>"); container.append("<h1>" + itemData.title + "</h1>"); var info = $("<div style='text-align:left;'>"); for (var field in itemData.data) { info.append("<p>" + field + ": <b>" + itemData.data[field] + "</b></p>"); } container.append(info); itemElement.append(container); } }); });
<div id="multiViewContainer"></div>
Angular
<dx-multi-view [dataSource]="multiViewItems" itemTemplate="item"> <div *dxTemplate="let content of 'item'"> <div style="margin: 25px;"> <h1>{{content.title}}</h1> <div style="text-align: left;"> <p *ngFor="let key of getItemKeys(content.data)"> {{key}}: <b>{{content.data[key]}}</b> </p> </div> </div> </div> </dx-multi-view>
import { DxMultiViewModule } from 'devextreme-angular'; // ... export class AppComponent { multiViewItems = [{ title: 'Personal Data', data: { firstName: 'John', lastName: 'Smith', birthYear: 1986 } }, { title: 'Contacts', data: { phone: '(555)555-5555', email: 'John.Smith@example.com' } }]; getItemKeys (item) { return Object.keys(item); } } @NgModule({ imports: [ // ... DxMultiViewModule ], // ... })
Vue
<template> <DxMultiView :data-source="multiViewItems" item-template="item"> <template #item="{ data }"> <div :style="{ margin: '25px' }"> <h1>{{data.title}}</h1> <div :style="{ textAlign: 'left' }"> <p v-for="key in getItemKeys(data.data)"> {{key}}: <b>{{data.data[key]}}</b> </p> </div> </div> </template> </DxMultiView> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxMultiView from 'devextreme-vue/multi-view'; export default { components: { DxMultiView }, data() { return { multiViewItems: [{ title: 'Personal Data', data: { firstName: 'John', lastName: 'Smith', birthYear: 1986 } }, { title: 'Contacts', data: { phone: '(555)555-5555', email: 'John.Smith@example.com' } }] }; }, methods: { getItemKeys: function(item) { return Object.keys(item); } } }; </script>
React
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import { MultiView } from 'devextreme-react/multi-view'; const multiViewItems = [{ title: 'Personal Data', data: { firstName: 'John', lastName: 'Smith', birthYear: 1986 } }, { title: 'Contacts', data: { phone: '(555)555-5555', email: 'John.Smith@example.com' } }]; class App extends React.Component { render() { return ( <MultiView dataSource={multiViewItems} itemRender={this.renderItem} /> ); } renderItem(content) { return ( <div style={{ margin: 25 }}> <h1>{content.title}</h1> <div style={{ textAlign: 'left' }}> { Object.keys(content.data).map(key => { return ( <p key={key}> {key}: <b>{content.data[key]}</b> </p> )} ) } </div> </div> ); } } export default App;
Angular
You can also customize individual views. Declare them using the dxItem component:
<dx-multi-view> <dxi-item text="Personal Data"></dxi-item> <dxi-item text="Contacts"></dxi-item> </dx-multi-view>
import { DxMultiViewModule } from 'devextreme-angular'; // ... export class AppComponent { // ... } @NgModule({ imports: [ // ... DxMultiViewModule ], // ... })
Vue
You can also customize individual views. Declare them using the dxItem component:
<template> <DxMultiView> <DxItem text="Personal Data" /> <DxItem text="Contacts" /> </DxMultiView> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxMultiView, { DxItem } from 'devextreme-vue/multi-view'; export default { components: { DxMultiView, DxItem } }; </script>
React
You can also customize individual views. Declare them using the dxItem component:
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import { MultiView, Item } from 'devextreme-react/multi-view'; class App extends React.Component { render() { return ( <MultiView> <Item text="Personal Data"/> <Item text="Contacts"/> </MultiView> ); } } export default App;
jQuery
You can also customize individual views. Declare the views as scripts and reference them in the template property or assign a customization function straight to this property:
$(function() { $("#multiViewContainer").dxMultiView({ dataSource: [{ text: "Personal Data", template: function() { return $("<p>").text("This is Personal Data View"); } }, { text: "Contacts", template: $("#individualTemplate") }] }); });
<div id="multiViewContainer"></div> <script id="individualTemplate" type="text/html"> <p>This is Contacts View</p> </script>
See Also
If you have technical questions, please create a support ticket in the DevExpress Support Center.