テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:フィルタ(選択肢一覧を他の項目の値で絞り込む)
## 概要
「[選択肢一覧](/manual/table-management-choices-text)」にColumnFilterExpressionsを指定することで、選択肢一覧を他の項目の値で絞り込むことができます。
## 対応バージョン
1. プリザンター 1.3.16.0 以降
## 制限事項
1. 「[担当者項目](/manual/table-management-owner)」「[管理者項目](/manual/table-management-manager)」「[分類項目](/manual/table-management-class)」以外では使用できません。
## 前提条件
1. 設定を行うには「サイトの管理権限」が必要です。
## 操作手順
エディタタブで分類の詳細設定を開き、選択肢一覧にJSON形式で選択肢のフィルタ方法を記述します。
### ColumnFilterExpressionsの指定方法
|式の種類|記述例|説明|
|:--|:--|:--|
|表示名でフィルタ|[ClassA]|指定する項目の選択肢一覧を値と表示名で設定していた場合、項目の「[表示名](/manual/table-management-label-text)」でフィルタします。JSON配列に変換を行ってフィルタします。|
|値でフィルタ|[@ClassA]|指定する項目の選択肢一覧を値と表示名で設定していた場合、項目の「値」でフィルタします。JSON配列に変換を行ってフィルタします。|
|値でそのままフィルタ|=[@ClassA]|JSON配列に変換を行わずに項目の値でフィルタします。フィルタに指定する項目の値を完全一致させたい場合に利用します。|
※「[選択肢一覧](/manual/table-management-choices-text)」が未設定(自由入力)または「[選択肢一覧](/manual/table-management-choices-text)」が値のみの場合は、式の種類がいずれの場合でも項目の「値」でフィルタします。
#### 設定例
下記のように記載すると、画面上の分類Aの「[表示名](/manual/table-management-label-text)」で、リンク先のテーブルの分類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": "[\"テスト\"]"
}
}
}
]
```
下記のように記載すると、画面上の分類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]"
}
}
}
]
```
#### 動作イメージ
下記をフィルタ対象とする分類Bの選択肢一覧に設定した場合、サイトID:12345のテーブルの分類Cが設定対象テーブルの分類Aの表示名に一致するレコードでフィルタされます。分類Aは「[自動ポストバック](/manual/table-management-auto-postback)」をオンにします。
##### JSON
```
[
{
"SiteId": 12345,
"View": {
"ColumnFilterExpressions": {
"ClassC": "[ClassA]"
}
}
}
]
```
##### 例1:表示名でフィルタする場合
サイトID:12345の分類Cが設定対象テーブルの分類Aの表示名に一致するレコードで分類Bがフィルタされます。

サイトID:12345の一覧画面

##### 例2:フィルタ先の分類項目が複数選択の場合
サイトID:12345の一覧画面(分類C)

・式の種類を「値でフィルタ」で設定した場合
サイトID:12345の分類Cが設定対象テーブルの分類Aの値にJSON形式の文字列として一致しないため、分類Bがフィルタ非表示となります。

・式の種類を「値でそのままフィルタ」で設定した場合
サイトID:12345の分類Cが設定対象テーブルの分類Aの値にJSON形式の文字列として一致するため、分類Bがフィルタされます。

### ユーザの所属グループを選択肢一覧に表示する方法
担当者項目に設定されているユーザの所属しているグループを任意の分類項目の選択肢一覧に表示します。
1. 該当のテーブルを開いてください。
1. 画面右上の管理/テーブルの管理をクリックしてください。
1. エディタタブから分類Aを有効化してください。
1. 有効化した分類Aの詳細設定画面から選択肢一覧に下記JSONを記載してください。
#### JSON
下記どちらかの条件に一致するグループが選択肢一覧に表示されます。
1. ユーザの所属しているグループ
2. ユーザの所属している組織が所属しているグループ
そのため、ユーザーが直接所属しているグループ、もしくは組織経由でユーザが所属しているグループが絞り込みの対象となります。
**"GroupMembers"がユーザー項目であることが前提条件となります。**
```
[
{
"TableName": "Groups",
"View": {
"ColumnFilterExpressions": {
"GroupMembers":"[@Owner]"
}
}
}
]
```
## 関連情報
<div id="ManualList"><ul><li><a href="/manual/table-management-manager">テーブルの管理:項目:管理者</a><span>2023/04/21 up</span></li>
<li><a href="/manual/table-management-owner">テーブルの管理:項目:担当者</a><span>2023/04/21 up</span></li>
<li><a href="/manual/table-management-class">テーブルの管理:項目:分類</a><span>2023/04/21 up</span></li></ul></article>
<ul><li><a href="/manual/table-management-label-text">テーブルの管理:エディタ:項目の詳細設定:表示名</a><span>2023/04/25 up</span></li>
<li><a href="/manual/table-management-choices-text">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧</a><span>2023/10/12 up</span></li>
<li><a href="/manual/table-management-auto-postback">テーブルの管理:エディタ:項目の詳細設定:自動ポストバック</a><span>2023/04/25 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />