Styling API

The wijmo.grid.style module provides a FlexGridStyle class that makes it easier to style cells in FlexGrid.

The FlexGridStyle class provides toggleClass, applyStyle, removeStyle and clearAllStyles methods to allow users to add or remove styles from cell ranges.

Learn about FlexGrid | FlexGridStyle API Documentation | FlexGrid API Reference

import 'bootstrap.css'; import '@mescius/wijmo.styles/wijmo.css'; import './styles.css'; import { FlexGrid } from '@mescius/wijmo.grid'; import * as wjStyle from "@mescius/wijmo.grid.style"; import * as wjGrid from '@mescius/wijmo.grid'; import * as wjInput from '@mescius/wijmo.input'; document.readyState === 'complete' ? init() : window.onload = init; function init() { //#region Controls var theCombo = new wjInput.ComboBox('#cboStyle', {}); var theGrid = new FlexGrid('#theGrid', { itemsSource: getData(), selectionMode: 'MultiRange', allowSorting: false, formatItem: function (s, e) { if (e.panel.cellType == wjGrid.CellType.RowHeader) e.cell.innerHTML = e.row; } }); //#endregion //#region FlexGridStyle var gridStyle = new wjStyle.FlexGridStyle(theGrid); var styleObject1 = { 'background-color': 'yellow', 'font-size': '18px' }; var styleObject2 = { 'color': 'red' }; document.getElementById('applyStyle1').addEventListener('click', () => { gridStyle.toggleClass(theGrid.selection, 'myStyle1'); }); document.getElementById('applyStyle2').addEventListener('click', () => { if (theCombo.selectedIndex == 0) gridStyle.applyStyle(theGrid.selection, styleObject1); else gridStyle.applyStyle(theGrid.selection, styleObject2, theGrid.cells, false); }); document.getElementById('applyStyle4').addEventListener('click', () => { gridStyle.toggleClass(new wjGrid.CellRange(0, 0, 1, 1), 'myStyle1', theGrid.columnHeaders); gridStyle.toggleClass(new wjGrid.CellRange(0, 0, 4, 0), 'myStyle1', theGrid.rowHeaders); }); document.getElementById('removeStyle2').addEventListener('click', () => { gridStyle.removeStyle(theGrid.selection, styleObject1); gridStyle.removeStyle(theGrid.selection, styleObject2); }); document.getElementById('clearAllStyles1').addEventListener('click', () => { gridStyle.clearAllStyles(theGrid.selection); }); document.getElementById('clearAllStyles2').addEventListener('click', () => { gridStyle.clearAllStyles(); }); //#endregion //#region Data function getData() { var countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','), data = []; for (var i = 0; i < 50; i++) { data.push({ id: i, country: countries[i % countries.length], downloads: Math.round(Math.random() * 20000), sales: Math.random() * 10000, expenses: Math.random() * 5000 }); } return data; } //#endregion }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>MESCIUS Wijmo FlexGrid Style API</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- SystemJS --> <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.21.5/system.src.js" integrity="sha512-skZbMyvYdNoZfLmiGn5ii6KmklM82rYX2uWctBhzaXPxJgiv4XBwJnFGr5k8s+6tE1pcR1nuTKghozJHyzMcoA==" crossorigin="anonymous"></script> <script src="systemjs.config.js"> </script> <script> System.import('./src/app'); </script> </head> <body> <div class="container-fluid"> <div class="col-md-4"> <div class="panel-group"> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> Toggle Class </h4> </div> <div class="panel-body"> <ul class="list-inline"> <li> <button class="btn btn-default" id="applyStyle1">Toggle Class on Selection</button> </li> <li> <button class="btn btn-default" id="applyStyle4">Toggle Class on Headers</button> </li> </ul> </div> </div> </div> </div> <div class="col-md-4"> <div class="panel-group"> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> Apply & Remove Styles </h4> </div> <div class="panel-body"> <ul class="list-inline"> <li> <select id="cboStyle"> <option value="0" selected>Inline</option> <option value="1">Class-based</option> </select> </li> <li> <button class="btn btn-default" id="applyStyle2">Apply</button> </li> <li> <button class="btn btn-default" id="removeStyle2">Remove</button> </li> </ul> </div> </div> </div> </div> <div class="col-md-4"> <div class="panel-group"> <div class="panel panel-default"> <div class="panel-heading"> <h4 class="panel-title"> Clear Styles </h4> </div> <div class="panel-body"> <ul class="list-inline"> <li> <button class="btn btn-default" id="clearAllStyles1">Clear all styles from selection</button> </li> <li> <button class="btn btn-default" id="clearAllStyles2">Clear all styles from Grid</button> </li> </ul> </div> </div> </div> </div> <div id="theGrid"></div> </div> </body> </html>
.wj-flexgrid { height: 350px; margin:10px 0; } body { margin-bottom: 20px; } .myStyle1 { background-color: antiquewhite !important; color: brown !important; } .myStyle2{ background-color: aquamarine !important; color:blue !important; }
(function (global) { System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, meta: { '*.css': { loader: 'css' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { 'jszip': 'npm:jszip/dist/jszip.js', '@mescius/wijmo': 'npm:@mescius/wijmo/index.js', '@mescius/wijmo.input': 'npm:@mescius/wijmo.input/index.js', '@mescius/wijmo.styles': 'npm:@mescius/wijmo.styles', '@mescius/wijmo.cultures': 'npm:@mescius/wijmo.cultures', '@mescius/wijmo.chart': 'npm:@mescius/wijmo.chart/index.js', '@mescius/wijmo.chart.analytics': 'npm:@mescius/wijmo.chart.analytics/index.js', '@mescius/wijmo.chart.animation': 'npm:@mescius/wijmo.chart.animation/index.js', '@mescius/wijmo.chart.annotation': 'npm:@mescius/wijmo.chart.annotation/index.js', '@mescius/wijmo.chart.finance': 'npm:@mescius/wijmo.chart.finance/index.js', '@mescius/wijmo.chart.finance.analytics': 'npm:@mescius/wijmo.chart.finance.analytics/index.js', '@mescius/wijmo.chart.hierarchical': 'npm:@mescius/wijmo.chart.hierarchical/index.js', '@mescius/wijmo.chart.interaction': 'npm:@mescius/wijmo.chart.interaction/index.js', '@mescius/wijmo.chart.radar': 'npm:@mescius/wijmo.chart.radar/index.js', '@mescius/wijmo.chart.render': 'npm:@mescius/wijmo.chart.render/index.js', '@mescius/wijmo.chart.webgl': 'npm:@mescius/wijmo.chart.webgl/index.js', '@mescius/wijmo.chart.map': 'npm:@mescius/wijmo.chart.map/index.js', '@mescius/wijmo.gauge': 'npm:@mescius/wijmo.gauge/index.js', '@mescius/wijmo.grid': 'npm:@mescius/wijmo.grid/index.js', '@mescius/wijmo.grid.detail': 'npm:@mescius/wijmo.grid.detail/index.js', '@mescius/wijmo.grid.filter': 'npm:@mescius/wijmo.grid.filter/index.js', '@mescius/wijmo.grid.search': 'npm:@mescius/wijmo.grid.search/index.js', '@mescius/wijmo.grid.style': 'npm:@mescius/wijmo.grid.style/index.js', '@mescius/wijmo.grid.grouppanel': 'npm:@mescius/wijmo.grid.grouppanel/index.js', '@mescius/wijmo.grid.multirow': 'npm:@mescius/wijmo.grid.multirow/index.js', '@mescius/wijmo.grid.transposed': 'npm:@mescius/wijmo.grid.transposed/index.js', '@mescius/wijmo.grid.transposedmultirow': 'npm:@mescius/wijmo.grid.transposedmultirow/index.js', '@mescius/wijmo.grid.pdf': 'npm:@mescius/wijmo.grid.pdf/index.js', '@mescius/wijmo.grid.sheet': 'npm:@mescius/wijmo.grid.sheet/index.js', '@mescius/wijmo.grid.xlsx': 'npm:@mescius/wijmo.grid.xlsx/index.js', '@mescius/wijmo.grid.selector': 'npm:@mescius/wijmo.grid.selector/index.js', '@mescius/wijmo.grid.cellmaker': 'npm:@mescius/wijmo.grid.cellmaker/index.js', '@mescius/wijmo.nav': 'npm:@mescius/wijmo.nav/index.js', '@mescius/wijmo.odata': 'npm:@mescius/wijmo.odata/index.js', '@mescius/wijmo.olap': 'npm:@mescius/wijmo.olap/index.js', '@mescius/wijmo.rest': 'npm:@mescius/wijmo.rest/index.js', '@mescius/wijmo.pdf': 'npm:@mescius/wijmo.pdf/index.js', '@mescius/wijmo.pdf.security': 'npm:@mescius/wijmo.pdf.security/index.js', '@mescius/wijmo.viewer': 'npm:@mescius/wijmo.viewer/index.js', '@mescius/wijmo.xlsx': 'npm:@mescius/wijmo.xlsx/index.js', '@mescius/wijmo.undo': 'npm:@mescius/wijmo.undo/index.js', '@mescius/wijmo.interop.grid': 'npm:@mescius/wijmo.interop.grid/index.js', '@mescius/wijmo.touch': 'npm:@mescius/wijmo.touch/index.js', '@mescius/wijmo.cloud': 'npm:@mescius/wijmo.cloud/index.js', '@mescius/wijmo.barcode': 'npm:@mescius/wijmo.barcode/index.js', '@mescius/wijmo.barcode.common': 'npm:@mescius/wijmo.barcode.common/index.js', '@mescius/wijmo.barcode.composite': 'npm:@mescius/wijmo.barcode.composite/index.js', '@mescius/wijmo.barcode.specialized': 'npm:@mescius/wijmo.barcode.specialized/index.js', 'jszip': 'npm:jszip/dist/jszip.js', 'bootstrap.css': 'npm:bootstrap/dist/css/bootstrap.min.css', 'css': 'npm:systemjs-plugin-css/css.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' }, } }); })(this);