非常に簡単な方法で試してみたところ、うまくいきました。ここに私が持っているものがあります:
- 私のデータベースがftインデックスされていることを確認してください!!
- id = "viewPanel1" で viewPanel を作成します
- viewPanel をビュー データソースにリンクする
次のコードを使用して、viewPanel の計算された検索プロパティを作成します。
requestScope.get("fts");
ビューパネルの上にコンボボックスを作成します
- コンボを requestScope 変数「fts」にバインドします
- コンボのオプション リストに適切な値を入力します
- コンボの onchange イベントで部分的な更新を実行し、これを viewPanel (ID: viewPanel1) にリンクします。
私の場合、「sub 1」、「sub 2」、...、「sub 6」などの値を持つ件名フィールドを持つテスト ドキュメントがビューに表示されます。そこで、コンボにオプション「1」...「6」を提供させました。
ft 検索文字列をより具体的にしたい場合は、viewPanel の検索プロパティで次のように作成できます (手順 4)。
if(requestScope.containsKey("fts") && requestScope.get("fts")!=""){
"Sub " + requestScope.get("fts");
}
それだけです-動作します。
問題が間違っている場合はお知らせください。その場合、何をしようとしているのか、これまでに何を試したのかについて、より具体的に説明する必要があります。
編集:
あなたのコメントに続いて、リストボックスをコンボに追加しました。listBox 自体は何も悪いことをしていないことがわかりますが、もちろん、この 2 つが互いに干渉しないように注意する必要があります。それで、これを解決するために私がしたことは次のとおりです。
- 「 ftsCombo」と呼ばれる別の requestScope 変数に自分のコンボボックスをバインドしました
- それに応じてリストボックスを「ftsList」にバインドしました
- 両方のコントロールに同じオプション リストがあり (上記を参照してください。もちろん、異なるオプションを使用できます。異なる値を考えるのが面倒でした...)、変更時に部分的な更新を実行しています。
- 結果を制御できるようにするために、viewPanel (id = " tgtPanel ") の周りに名前付きパネルを作成し、そのパネルを対象とするように部分更新ルールを変更しました
- ビューの上のパネル内に 2 つの計算フィールドを作成し、それぞれが requestScope 変数 ( ftsCombo / ftsList ) の 1 つにバインドされているため、 onchange がトリガーされた後にスコープ内にあるものを確認できます
- 両方の onchange イベントで、SSJS コードの短いスニペットを作成して、「他の」変数をクリアし、2 つの変数が互いに邪魔にならないようにしました。
(コンボのオンチェンジ:)
requestScope.remove("ftsList");
(リストの変更時:)
requestScope.remove("ftsCombo");
最後に、ビューの計算された検索プロパティを次のように変更しました。
if(requestScope.containsKey("ftsCombo") && requestScope.get("ftsCombo")!=""){
return "Sub " + requestScope.get("ftsCombo");
}
if(requestScope.containsKey("ftsList") && requestScope.get("ftsList")!=""){
return "Sub " + requestScope.get("ftsList");
}
これで、コンボまたはリストを使用してフィルターを適用できます