C1OlapGrid コントロールは C1FlexGrid コントロールから派生したものなので、グリッドのカスタムセル機能を使用すると、そのコンテンツに基づいてセルにスタイルを適用できます。このサンプルは、100 よりも大きい値が薄緑の背景で表示されるグリッドを示しています。
この C1OlapGrid コントロールには、グリッドに表示されるすべてのセルを作成する CellFactory クラスが含まれます。カスタムセルを作成するには、ICellFactory インタフェースを実装するクラスを作成し、このクラスをグリッドの CellFactory プロパティに割り当てる必要があります。カスタム列と同様に、カスタム ICellFactory クラスは、極めて特殊なアプリケーション固有のクラスである場合も、一般的で再利用可能な構成可能なクラスである場合も考えられます。通常、カスタム ICellFactory クラスは直接セルを操作するため、カスタム列よりも格段に簡潔です。
以下に、100 を超える値のセルに緑のカスタム背景を適用する ConditionalCellFactory クラスを実装するコードを示します。
C# |
コードのコピー
|
---|---|
public class ConditionalCellFactory : C1.Silverlight.FlexGrid.CellFactory { public override FrameworkElement CreateCell(C1FlexGrid grid, CellType cellType, CellRange range) { // 大部分の作業は基本クラスで処理します var cell = base.CreateCell(grid, cellType, range); // 必要に応じて緑の背景を適用します if (cellType == CellType.Cell) { var cellValue = grid[range.Row, range.Column]; if (cellValue is double && (double)cellValue > 100) { var border = cell as Border; border.Background = _greenBrush; } } // 終了 return cell; } static Brush _greenBrush = new SolidColorBrush(Color.FromArgb(0xff, 88, 183, 112)); } |
C1OlapGrid でこれを使用するために必要なコードを以下に示します。
C# |
コードのコピー
|
---|---|
// グリッドセルに条件付き書式設定を適用します _c1OlapPage.OlapGrid.CellFactory = new ConditionalCellFactory(); |
前の例にこのコードを追加すると、実行時にどのように表示されるかを確認できます。