IgbGrid でセルの値に応じてセルの色を変えてみましょう。完成イメージはこんな感じになります。
方法
「在庫数」の IgbColumn の CellClassesScript に CellClasses をハンドルする JavaScript を指定します。
@* App.razor *@ <IgbColumn Field="@nameof(Product.StockedAmount)" Header="在庫数" CellClassesScript="CellClassesHandler" />
ハンドラーは、
- キーが CSS クラス名
- 値がその CSS クラスを適用するかどうかの bool 値
という構成のオブジェクトを返すようにします。
// wwwroot\IGJavaScript.js igRegisterScript("CellClassesHandler", () => { return { low: (rowData, columnKey, cellValue, rowIndex) => rowData[columnKey] < 10, high: (rowData, columnKey, cellValue, rowIndex) => rowData[columnKey] > 50 }; }, true);
上記 CSS クラスについてのスタイル定義を用意します。
/* App.razor.css*/ ::deep .low { background-color: pink; } ::deep .high { background-color: lightgreen; }
以上で条件付きセルのスタイリングが完成です。
なお、行選択やマウスホバー時のスタイル定義は以下の CSS セレクターを用いて指定可能です。
- マウスホバーしている行のセル – igx-grid-row:hover igx-grid-cell
- 行選択されている行のセル – igx-grid-cell[aria-selected=”true”]
- 行選択されていて、かつ、マウスホバーしている行のセル – igx-grid-row:hover igx-grid-cell[aria-selected=”true”]
実際に行のカスタム CSS クラスと組み合わせた例を以下に示します。
/* マウスホバーしている場合のスタイル定義 */ ::deep igx-grid-row:hover igx-grid-cell.low { background-color: hotpink; } ::deep igx-grid-row:hover igx-grid-cell.high { background-color: limegreen; } /* 行選択されている場合のスタイル定義 */ ::deep igx-grid-cell[aria-selected="true"].low { background-color: hotpink; } ::deep igx-grid-cell[aria-selected="true"].high { background-color: limegreen; } /* 行選択されていて、かつ、マウスホバーしている場合のスタイル定義 */ ::deep igx-grid-row:hover igx-grid-cell[aria-selected="true"].low { background-color: deeppink; } ::deep igx-grid-row:hover igx-grid-cell[aria-selected="true"].high { background-color: mediumseagreen; }
実際の動作サンプルはこちらで確認できます。
関連ドキュメント
- CellClasses の使用
- 条件付き行のスタイリングはこちら
Pingback: IgbGrid セルの値に応じて行全体の色を変える – INFRAGISTICS ナレッジベース