選択肢の絞り込み
最終更新日: 2021年1月11日
R8 | R9
次のモデル参照項目を用意するものとします。
(a) アカウント(juser)を参照し、リストボックスとして扱う項目。
ここで (b) の選択肢に、(a) が所属するグループのみを表示する設定を行うものとします。
新規登録画面の初期状態は次の通りです。「グループID (隠し項目)」は本来は隠しとするものですが、内容確認のために表示させています。二つのリストボックスはいずれも "未選択" となっています。
アカウントを選択します。
アカウントに紐づくグループは参照連動項目「グループID(隠し項目)」に反映されます。さらに、これが「所属グループ」項目のリストボックスの選択肢になっています。
アカウントを選択しなおしたとき、グループの選択肢も変更されます。
サンプルモデルの定義を示します。
アカウントは juser モデルをリストボックスとして参照しています。また、この項目は "値が変更されたときに画面を再描画する" も有効にします。
アカウントに紐づく所属グループを参照連動する項目です。この項目はチェックボックスとなります。
参照連動項目とは別に、所属グループをリストボックスとして用意します。
参照連動項目(jgroupid)を、リストボックス項目(group)に転記するためのスクリプトを用意します。このスクリプトは Wagby 内部で、ストアモデルからプレゼンテーションモデルを作成するタイミングで呼び出されます。
例
(b) グループ(jgroup)を参照し、リストボックスとして扱う項目。
定義方法
if (sample_p === null) {
return;
}
// 選択されたアカウントの所属グループIDを jgroupids に格納する。
var jgroupids = new java.util.ArrayList();
for(var i=0; i < juser_p.jgroupid.length; i++) {
jgroupids.add(juser_p.jgroupid[i].id);
}
// 所属グループIDを持つ選択肢と「(未選択)」を groups に格納する。
var groups = new java.util.ArrayList();
for(var i=0; i < sample_p.group.length; i++) {
var element = sample_p.group[i];
if (element.noId // 「(未選択)」選択肢
|| jgroupids.contains(element.id)) {
groups.add(element);
}
}
// groups を配列に変換して sample_p.group にセットする。
var groupArry = Java.type("jp.jasminesoft.wagby.model.sample_p.Group[]");
sample_p.group = groups.toArray(new groupArry(groups.size));