Your search did not match any results.
Tag Box

Tag Count Limitation

Documentation

You can use the maxDisplayedTags option to limit the number of displayed tags. When the specified limit is exceeded, the tags are combined into a single multi-tag that displays the number of selected items. Use the showMultiTagOnly option to specify whether to display a multi-tag only or other tags as well. You can also use onMultiTagPreparing event handler to customize the multi-tag, as shown in the second example.

Copy to CodeSandBox
Apply
Reset
<div> <div class="dx-fieldset"> <div class="dx-field"> <div class="dx-field-label"> Multi-tag for several items </div> <div class="dx-field-value"> <dx-tag-box [items]="products" [value]="[1, 2, 3, 4]" displayExpr="Name" valueExpr="Id" [showSelectionControls]="true" selectAllMode="allPages" [maxDisplayedTags]="3" ></dx-tag-box> </div> </div> <div class="dx-field"> <div class="dx-field-label"> Multi-tag for all items </div> <div class="dx-field-value"> <dx-tag-box [items]="products.slice(0, 5)" [value]="[1, 2, 3, 4, 5]" displayExpr="Name" valueExpr="Id" [showSelectionControls]="true" (onMultiTagPreparing)="onMultiTagPreparing($event)" [maxDisplayedTags]="3" ></dx-tag-box> </div> </div> <div class="dx-field"> <div class="dx-field-label"> Multi-tag with ordinary tags </div> <div class="dx-field-value"> <dx-tag-box [items]="products" [value]="[1, 2, 3, 4, 5, 6, 7]" displayExpr="Name" valueExpr="Id" [showSelectionControls]="true" selectAllMode="allPages" [maxDisplayedTags]="2" [showMultiTagOnly]="false" ></dx-tag-box> </div> </div> </div> </div>
import { Component, NgModule, enableProdMode } from '@angular/core'; import { BrowserModule } from "@angular/platform-browser"; import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; import { DxTagBoxModule } from "devextreme-angular"; import DataSource from "devextreme/data/data_source"; import { Product, Service } from './app.service'; if(!/localhost/.test(document.location.host)) { enableProdMode(); } @Component({ selector: 'demo-app', providers: [Service], templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'] }) export class AppComponent { products: Product[]; constructor(service: Service) { this.products = service.getProducts(); } onMultiTagPreparing(args){ var selectedItemsLength = args.selectedItems.length, totalCount = 5; if (selectedItemsLength < totalCount) { args.cancel = true; } else { args.text = "All selected (" + selectedItemsLength + ")"; } } } @NgModule({ imports: [ BrowserModule, DxTagBoxModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
::ng-deep .dx-field { margin-bottom: 50px; }
import { Injectable } from '@angular/core'; export class Product { Id: number; Name: string; Price: number; Current_Inventory: number; Backorder: number; Manufacturing: number; Category: string; ImageSrc: string; } let products: Product[] = [{ Id: 1, Name: "HD Video Player", Price: 330, Current_Inventory: 225, Backorder: 0, Manufacturing: 10, Category: "Video Players", ImageSrc: "../../../../images/products/1.png" }, { Id: 2, Name: "SuperHD Video Player", Price: 400, Current_Inventory: 150, Backorder: 0, Manufacturing: 25, Category: "Video Players", ImageSrc: "../../../../images/products/2.png" }, { Id: 3, Name: "SuperPlasma 50", Price: 2400, Current_Inventory: 0, Backorder: 0, Manufacturing: 0, Category: "Televisions", ImageSrc: "../../../../images/products/3.png" }, { Id: 4, Name: "SuperLED 50", Price: 1600, Current_Inventory: 77, Backorder: 0, Manufacturing: 55, Category: "Televisions", ImageSrc: "../../../../images/products/4.png" }, { Id: 5, Name: "SuperLED 42", Price: 1450, Current_Inventory: 445, Backorder: 0, Manufacturing: 0, Category: "Televisions", ImageSrc: "../../../../images/products/5.png" }, { Id: 6, Name: "SuperLCD 55", Price: 1350, Current_Inventory: 345, Backorder: 0, Manufacturing: 5, Category: "Televisions", ImageSrc: "../../../../images/products/6.png" }, { Id: 7, Name: "SuperLCD 42", Price: 1200, Current_Inventory: 210, Backorder: 0, Manufacturing: 20, Category: "Televisions", ImageSrc: "../../../../images/products/7.png" }, { Id: 8, Name: "SuperPlasma 65", Price: 3500, Current_Inventory: 0, Backorder: 0, Manufacturing: 0, Category: "Televisions", ImageSrc: "../../../../images/products/8.png" }, { Id: 9, Name: "SuperLCD 70", Price: 4000, Current_Inventory: 95, Backorder: 0, Manufacturing: 5, Category: "Televisions", ImageSrc: "../../../../images/products/9.png" }, { Id: 10, Name: "DesktopLED 21", Price: 175, Current_Inventory: null, Backorder: 425, Manufacturing: 75, Category: "Monitors", ImageSrc: "../../../../images/products/10.png" }, { Id: 12, Name: "DesktopLCD 21", Price: 170, Current_Inventory: 210, Backorder: 0, Manufacturing: 60, Category: "Monitors", ImageSrc: "../../../../images/products/12.png" }, { Id: 13, Name: "DesktopLCD 19", Price: 160, Current_Inventory: 150, Backorder: 0, Manufacturing: 210, Category: "Monitors", ImageSrc: "../../../../images/products/13.png" }, { Id: 14, Name: "Projector Plus", Price: 550, Current_Inventory: null, Backorder: 55, Manufacturing: 10, Category: "Projectors", ImageSrc: "../../../../images/products/14.png" }, { Id: 15, Name: "Projector PlusHD", Price: 750, Current_Inventory: 110, Backorder: 0, Manufacturing: 90, Category: "Projectors", ImageSrc: "../../../../images/products/15.png" }, { Id: 16, Name: "Projector PlusHT", Price: 1050, Current_Inventory: 0, Backorder: 75, Manufacturing: 57, Category: "Projectors", ImageSrc: "../../../../images/products/16.png" }, { Id: 17, Name: "ExcelRemote IR", Price: 150, Current_Inventory: 650, Backorder: 0, Manufacturing: 190, Category: "Automation", ImageSrc: "../../../../images/products/17.png" }, { Id: 18, Name: "ExcelRemote Bluetooth", Price: 180, Current_Inventory: 310, Backorder: 0, Manufacturing: 0, Category: "Automation", ImageSrc: "../../../../images/products/18.png" }, { Id: 19, Name: "ExcelRemote IP", Price: 200, Current_Inventory: 0, Backorder: 325, Manufacturing: 225, Category: "Automation", ImageSrc: "../../../../images/products/19.png" } ]; @Injectable() export class Service { getProducts(): Product[] { return products; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular 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@8.0.0/lib/plugin.js', 'typescript': 'npm:typescript@3.4.5/lib/typescript.js', '@angular/core': 'npm:@angular/core@8.0.0/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@8.0.0/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@8.0.0/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@8.0.0/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@8.0.0/bundles/platform-browser-dynamic.umd.js', '@angular/router': 'npm:@angular/router@8.0.0/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@8.0.0/bundles/forms.umd.js', '@angular/common/http': 'npm:@angular/common@8.0.0/bundles/common-http.umd.js', 'tslib': 'npm:tslib/tslib.js', 'rxjs': 'npm:rxjs@6.3.3', 'rxjs/operators': 'npm:rxjs@6.3.3/operators', 'devextreme': 'npm:devextreme@19.1', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.6/dist/quill.js', 'devexpress-diagram': 'npm:devexpress-diagram', 'devextreme-angular': 'npm:devextreme-angular@19.1' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'rxjs': { main: 'index.js', defaultExtension: 'js' }, 'rxjs/operators': { main: 'index.js', 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/19.1.4/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.1.4/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.21.3/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>