カスタマイズ条件フィルター
概要
カスタマイズ条件フィルターは複数条件の組み合わせによってデータをフィルタリングする機能です。 カスタマイズ条件フィルターで列のIDを比較部として利用できます。列ベースデータソースの詳細についてこちらを参照してください。
フィルターのインターフェイス
Interface ICondition {
String ColumnID; // カラムID
ConditionOperator Operator; // 比較方法(演算子)
Object Value; // 値(上記種類の1つ)
Boolean IsEnabled; // 有効/無効
}
比較演算子
| 比較方法 | 相当する演算子 | 対象値の種類 |
|---|---|---|
| 指定の値に等しい | == | 任意? |
| 指定の値に等しくない | != | 任意? |
| 指定の値で始まる | ~* | 文字列 |
| 指定の値で終わる | *~ | 文字列 |
| 指定の値を含む | ~ | 文字列 |
| 指定の値を含まない | !~ | 文字列 |
| 指定の値より大きい | > | 数字、日付 |
| 指定の値以上 | >= | 数字、日付 |
| 指定の値より小さい | < | 数字、日付 |
| 指定の値以下 | <= | 数字、日付 |
| 指定の集合に含まれる | IN | 配列(要素の型は任意?) |
値の種類
- 文字列
"" - 数値
12345.12 - 配列
.NET型 ArrayList - 日付
2021/5/12
使用例
条件の作成・追加
// 条件フィルターを作成
var filter = new ConditionalDataFilter();
// 通貨 != USD 条件を作成
var condition = new FilterCondition(ColumnId, ConditionOperator.NotEquals, "USD");
// 条件リストに追加
filter.Conditions.Add(condition);
データソースを作成
条件フィルターを利用するには、条件フィルター用のデータソース ColumnBasedDataSource を作成する必要があります。
ColumnBasedDataSource は格納するデータに対して列を定義することができます。列の識別子は文字列の ID です。
// データソースを作成
var ds = new ColumnBasedDataSource();
// 列を定義
ds.Columns.AddRange("id", "tsuka", "kamoku", "baibai", "zengaku", "hiduke", "biko");
// データを格納
for (int r = 0; r < 30; r++)
{
var record = ds.Records.AppendNew();
// ID
record["id"] = 15001;
// 通貨
record["tsuka"] = "USD";
// 科目
record["kamoku"] = "015";
// 売買
record["baibai"] = "売";
// 全額
record["zengaku"] = 105800;
// 日付
record["hiduke"] = new DateTime(2020, 11, 1);
// 備考
record["biko"] = "...";
}
データソースをワークシートに追加
// データソースをワークシートに追加、 A1:G30 は格納先の範囲アドレス
sheet.AddDataSource("A1:G30", ds);
フィルターを作成
Filter = new ConditionalDataFilter();
フィルターが応用された場合、ワークシートのデータを更新するようにイベント処理を追加:
Filter.OnApply += (s, e) => sheet.DoFilter("A1:G30", Filter);
渡した範囲アドレス A1:G30 はデータソースを追加した際に指定した範囲と一致する必要があります。
フィルターを適用
UIで条件を変更して、フィルターの Apply メソッドを呼び出すとワークシートが更新されます。
filter.Apply();