IgbDataChart において、シリーズ項目の外観を動的に変更する方法についてご紹介します。
IgbDataChart の設定
まず、IgbColumnSeries を以下のように設定します、
- IsCustomCategoryStyleAllowed プロパティを “true” に設定します。これによりシリーズのカスタムスタイルが許可されます。
- AssigningCategoryStyleScript プロパティにイベントハンドラを設定します。これは各列のスタイルを動的に変更するためのスクリプトです。
<IgbDataChart ....>
....
<IgbColumnSeries ....
IsCustomCategoryStyleAllowed="true"
AssigningCategoryStyleScript="onAssigningCategoryStyleScript"
ValueMemberPath="@nameof(SampleDataItem.Sales)">
</IgbColumnSeries>
</IgbDataChart>
イベントハンドラの登録
次に、AssigningCategoryStyleScript イベントハンドラを登録します。
このイベントハンドラは、各列のスタイルを動的に変更するために使用します。
function onAssigningCategoryStyleScript(o, e) {
var startIndex = e.startIndex;
var endIndex = e.endIndex;
var items = e.getItems(startIndex, endIndex);
for (var i = 0; i < items.length; i++) {
var item = items[i];
// Sales が 60000 未満の場合は赤いストロークとピンクの塗りつぶしを適用
if (item.Sales < 60000) {
e.stroke = "red";
e.strokeThickness = "1";
e.fill = "pink";
}
// Sales が 60000 以上 80000 未満の場合はオレンジのストロークと黄色の塗りつぶしを適用
else if (item.Sales < 80000) {
e.stroke = "orange";
e.strokeThickness = "1";
e.fill = "yellow";
}
// Sales が 80000 以上の場合は緑のストロークとライト緑の塗りつぶしを適用
else if (item.Sales >= 80000) {
e.stroke = "green";
e.strokeThickness = "1";
e.fill = "lightgreen";
}
}
}
igRegisterScript("onAssigningCategoryStyleScript", onAssigningCategoryStyleScript, false);
実行結果
これで、IgbDataChart のシリーズの外観は、各列の Sales 値(売上)に基づいて動的に変更されました。
