「選択肢一覧」にJSON形式でColumnFilterExpressionsを指定することで、選択肢一覧を他の項目の値で絞り込むことができます。
※本機能は開発者向け機能です。JSONの記述についてはサポート対象外となります。
■制限事項
「担当者項目」「管理者項目」「分類項目」以外では使用できません。
■設定方法
設定を行うには「サイトの管理権限」が必要です。
エディタタブで分類の詳細設定を開き、選択肢一覧にJSON形式で選択肢のフィルタ方法を記述します。
ColumnFilterExpressionsの指定方法
<設定項目>
式の種類 | 記述例 | 説明 |
---|---|---|
表示名でフィルタ | [ClassA] | 指定する項目の選択肢一覧を値と表示名で設定していた場合、項目の「表示名」でフィルタします。JSON配列に変換を行ってフィルタします。 |
値でフィルタ | [@ClassA] | 指定する項目の選択肢一覧を値と表示名で設定していた場合、項目の「値」でフィルタします。JSON配列に変換を行ってフィルタします。 |
値でそのままフィルタ | =[@ClassA] | JSON配列に変換を行わずに項目の値でフィルタします。フィルタに指定する項目の値を完全一致させたい場合に利用します。 |
設定例1:表示名でフィルタ
下記のように記載すると、画面上の分類Aの「表示名」で、リンク先のテーブルの分類Xを検索します。画面上の分類Aにポストバックを設定しておくと、分類Aを変更した際に即座にリストに反映します。
<jsonデータ>
[
{
"SiteId": 12345,
"View": {
"ColumnFilterExpressions": {
"ClassX": "[ClassA]"
}
}
}
]
画面上の分類Aに「テスト」と記載されている場合、内部的な動作としては、下記のようになります。
分類Xが選択肢なしの場合(そのままColumnFilterHashに渡されます)
<jsonデータ>
[
{
"SiteId": 12345,
"View": {
"ColumnFilterHash": {
"ClassX": "テスト"
}
}
}
]
分類Xが選択肢ありの場合(左辺が選択肢ありの場合、自動的にJSON配列に変換されて渡されます)
<jsonデータ>
[
{
"SiteId": 12345,
"View": {
"ColumnFilterHash": {
"ClassX": "[\"テスト\"]"
}
}
}
]
設定例2:値でフィルタ
下記のように記載すると、画面上の分類Aの「値」で、リンク先のテーブルの分類Xを検索します。分類Aに値と表示名がある場合、値を取り出したい際に@を付与します。
<jsonデータ>
[
{
"SiteId": 12345,
"View": {
"ColumnFilterExpressions": {
"ClassX": "[@ClassA]"
}
}
}
]
下記のように記載すると、画面上の分類Aの「値」をJSON文字列に変換せずに直接渡すことができます。例えば、分類Aが複数選択項目の場合、[@ClassA]には既にJSON形式の文字列が入っています。左辺が選択肢ありの場合、自動的にJSON配列に変換される仕組みがありますが、既にJSONが入っている場合に変換をさせないよう=を記述します。
<jsonデータ>
[
{
"SiteId": 12345,
"View": {
"ColumnFilterExpressions": {
"ClassX": "=[@ClassA]"
}
}
}
]
右辺に数値を使用する場合、@をつけないと記号や単位のついた文字列で検索が行われますのでご注意ください。
<jsonデータ>
[
{
"SiteId": 12345,
"View": {
"ColumnFilterExpressions": {
"ClassX": "=[@NumA]"
}
}
}
]
<動作イメージ>
テーブルAの分類Bを、他の項目の表示名で絞り込む場合
テーブルB:分類Cを設定
テーブルA:分類A、分類Bを設定(分類Bの選択肢一覧にColumnFilterExpressionsを指定)
分類A
分類B
分類Aの「表示名」でリンク先テーブルBの分類Cを検索するよう以下のように指定します。
テーブルBにて、分類Cを「選択肢1」としたレコードを設定します。
※テーブルBのレコード一覧
テーブルAの分類Aで「選択肢1」を選択します。
⇒分類Bの選択肢として、テーブルBの分類Cが「選択肢1」となっている「マスタA」「マスタC」が表示されます。
ユーザの所属グループを選択肢一覧に表示する方法
下記の例では、担当者項目に設定されているユーザの所属しているグループを分類Kの選択肢一覧に表示します。
下記どちらかの条件に一致するグループが選択肢一覧に表示されます。
・ユーザの所属しているグループ
・ユーザの所属している組織が所属しているグループ
そのため、ユーザーが直接所属しているグループ、もしくは組織経由でユーザが所属しているグループが絞り込みの対象となります。
<jsonデータ>
[ { "TableName": "Groups", "View": { "ColumnFilterExpressions": { "GroupMembers":"[@Owner]" } } } ]
※"GroupMembers"がユーザー項目であることが前提条件となります。
<動作イメージ>
担当者項目でユーザ「中村一郎」を選択します。
⇒分類項目の選択肢として「中村一郎」が所属しているグループが表示されます。
※担当者項目で「自動ポストバック」を有効にしていない場合、
担当者を選択しただけでは分類項目のグループは変更されず、「更新」ボタン押下時に反映されます。