igGridでセルの値に応じて行全体の色を変えてみましょう。完成イメージはこんな感じになります。
方法は2つあります。
方法1: columnsのtemplateを使ってCSSクラスを追加する
テンプレートエンジンを使って在庫数が20未満かどうか判定し、20未満であれば背景色をピンク色にするCSSをTDに対して追加します。
テンプレートエンジンを設定する場所は、columnsのtemplateオプションです。
下のコードスニペットでは、12行目、16行目、20行目が実装箇所です。
<style> #grid1 > tbody > tr > td.myStyle { background-color: pink; } </style> ... $("#grid1").igGrid({ ... columns: [ { headerText: "製品ID", key: "ProductId", dataType: "number", template: "<td {{if ${StockedAmount} < 20}} class='myStyle' {{/if}}>${ProductId}</td>" }, { headerText: "製品名", key: "ProductName", dataType: "string", template: "<td {{if ${StockedAmount} < 20}} class='myStyle' {{/if}}>${ProductName}</td>" }, { headerText: "在庫数", key: "StockedAmount", dataType: "number", template: "<td {{if ${StockedAmount} < 20}} class='myStyle' {{/if}}>${StockedAmount}</td>" }, ], ... });
方法1のサンプル
方法1のリファレンス
テンプレート エンジンの概要
https://jp.igniteui.com/help/igtemplating-overview
columnsのtemplateオプション
https://jp.igniteui.com/help/api/2019.1/ui.iggrid#options:columns.template
方法2: rowsRenderedイベントでCSSクラスを追加する
行が描画されたタイミングで発生するrowsRenderedイベントのイベントハンドラーで、
- 描画された行のコレクションを取り出し(下のコードスニペットでは13行目。以下同様)、
- 各行に紐づいた要素からバインドされているデータを取り出し(22~28行目)、
- 在庫数が20未満かどうか判定し(33行目)、
- 20未満であれば背景色をピンク色にするCSSをTDに対して追加します(35行目)。
<style> #grid1 > tbody > tr > td.myStyle { background-color: pink; } </style> ... $("#grid1").igGrid({ ... // rowsRenderedイベントのイベントハンドラー rowsRendered: function(evt, ui){ // 描画されたTR要素を取り出す var rowTrs = ui.owner.rows(); // 各TR要素について $.each(rowTrs, function (index, item) { // itemの存在チェック if(item !== undefined && item !== null){ // TR要素に紐づいた要素の情報を取り出す var elementInfo = ui.owner.getElementInfo(item); // TR要素に紐づいた要素の情報を取り出せたら if(elementInfo !== undefined && elementInfo !== null){ // 行IDからバインドされているデータを取り出す var record = ui.owner.findRecordByKey(elementInfo.rowId); // 行IDからバインドされているデータを取り出せたら if(record !== undefined && record !== null){ // 「StockedAmount」の値が20未満なら if (record.StockedAmount < 20) { // 背景色をピンクにするclassを当てる $(item).find("td").addClass("myStyle"); } } } } }); } ... })
方法2のサンプル
方法2のリファレンス
rowsRenderedイベント
https://jp.igniteui.com/help/api/2019.1/ui.iggrid#events:rowsRendered
getElementInfoメソッド
https://jp.igniteui.com/help/api/2019.1/ui.iggrid#methods:getElementInfo
findRecordByKeyメソッド
https://jp.igniteui.com/help/api/2019.1/ui.iggrid#methods:findRecordByKey