ShowTable of Contents
概要
ビューコントロールのフィルタリング、検索方法ついてです。
カテゴリ名によるフィルタリング
・データソースのビューの1列目の値でフィルタリングします。
・ビューの2列名以降ではフィルタリングできません。
・ビューの1列目はソートが必要です。
・フィルタリングするカテゴリ別の列が必要です。
・通常、1列目をカテゴリ別でソート
・下記の例は、1列目がカテゴリコード、2列名がカテゴリ名になっています。
・1列目:ソート昇順、カテゴリなし
・2列名:ソート昇順、カテゴリ別
・データベースの全文索引はなくても可
・ノーツクライアントで単一カテゴリの機能を使っていたものは、この機能で置き換えることができる。

↓「九州」でフィルタリング
上図のデータソースであるビューは以下のようになっています。
[動きの流れ]
①コンボボックスで選択肢を選択
②コンボボックスのon changeイベントでviewScope searchVariableにカテゴリを設定
③ビューコントロールを部分更新しフィルタリングされる
[設定の仕方]
1.Xpage または カスタムコントロールにビューコントロールを配置します。
2.カテゴリを選ぶカスタムコントロールを作成します。
例)カスタムコントロール:cc_Search_partialrefresh
3.カテゴリを表示するコンボボックスを追加し、値を設定します。
・データソースのビューの1列名と2列目を使用します。
・ビューの値とは別に、すべて|99 を設定します。
4. 3で作成したコンボボックスのイベントで、[選択して変更]-[onchange]でviewScopeにコンボボックスの値を設定します。
・viewScope searchVariableにカテゴリを設定
・viewScope searchVariable2に都道府県を設定(カテゴリの設定では使用しません。)
if(getComponent("inputSearch").getValue()=="99"){
viewScope.searchVariable = "";
}else{
viewScope.searchVariable = getComponent("inputSearch").getValue();
};
5.部分更新を設定します。
compositeData.id_ForPartialRefresh
6.上記のカスタムコントロールをビューコントロールの上に追加します。
7.追加したカスタムコントロールのすべてプロパティで、id_ForPartialRefresh に ビューコントロールのidを設定します。
8.ビューコントロールのデータを定義している箇所で、カテゴリによるフィルタリングに、4で設定したviewScopeを設定します。
列の値によるフィルタリング
・データソースのビューの1列目の値でフィルタリングします。
・1列目はソートが必要です。
・2列名以降ではフィルタリングできません。
・データベースの全文索引はなくても可
[「カテゴリ名によるフィルタリング」との違い]
・フィルタリングしたい列がカテゴリなしでも検索可能
・フィルタリングしたい列がカテゴリ別の場合、「カテゴリ名によるフィルタリング」と同じとなる
列がカテゴリ別の場合
↓「九州」でフィルタリング ビューコントロールのカテゴリ列の値は見えなくなくなる
列がカテゴリなしの場合
↓「九州」でフィルタリング ビューコントロールのカテゴリ列の値は見えなくなくなる
[動きの流れ]
1.カテゴリ名によるフィルタリングと同じ。
①コンボボックスで選択肢を選択
②コンボボックスのon changeイベントでviewScope searchVariableにカテゴリを設定
③ビューコントロールを部分更新しフィルタリングされる
[設定の仕方]
1. 1.カテゴリ名によるフィルタリングの7まで同じ。
2.ビューコントロールのデータを定義している箇所で、列の値によるフィルタリングに、viewScopeを設定します。
結果の表示で検索
・ノーツクライアントの検索バーと同じ使い方ができます。
・データベースの全文索引が必要です。
[動きの流れ]
1.カテゴリ名によるフィルタリングと同じ。
①編集ボックスで検索ワードを入力
②リンク検索のon clickイベントでviewScope searchVariableに値を設定
③ビューコントロールを部分更新しフィルタリングされる
[設定の仕方]
1.Xpage または カスタムコントロールにビューコントロールを配置します。
2.検索ワードを入力するカスタムコントロールを作成します。
3.作成したカスタムコントロールに、編集ボックスを追加します。
4.リンクコントロールを追加しイベントの [マウス]-[onclick]で、viewScopeに検索条件を設定します。
※(任意) スペース区切りで検索ワードを入力できるよう、コードの1行目と2行目で、「スペース区切り」を「&区切り」に変換しています。
var fromList = new Array(" "," "); //検索対象
var search = @ReplaceSubstring(getComponent("inputSearch").getValue(),fromList,"&");
viewScope.searchVariable = search;
5.部分更新を設定します。
compositeData.id_ForPartialRefresh
6.上記のカスタムコントロールをビューコントロールの上に追加します。
7.追加したカスタムコントロールのすべてプロパティで、id_ForPartialRefresh に ビューコントロールのidを設定します。
8.ビューコントロールのデータを定義している箇所で、カテゴリによるフィルタリングに、4で設定したviewScopeを設定します。
列のソート
・ビューコントロールで最優先でソートされます。
・「列のソート」で指定した列は、データソースのビューの列でソートが必要です。
例)人口の列が降順
・ソートの種類(昇順・降順)は設定した列の設定が反映されます。
・「結果の表示で検索」と組わせて使用できるのは、Lotus Domino8.5.3以上です。
例)
1.列のソートを「人口(population)」で設定
2.データソースのビューは、人口は降順でソート
3.検索ワード「島」で検索
4.「島」で絞られたデータが、人口の降順で並びます。
参考にしたサイトなど
・Lotus Notes and Domino Application Development wiki :
・XPagesでビューの部分検索を行う(OpenNtf.Orgのカスタムコントロールの用い方)
http://www-10.lotus.com/ldd/ddwiki.nsf/017a458ac61675e78025716900586077/676817b12eede386852578010011b1f0?OpenDocument
・検索結果をビューコントロールに表示する
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/%E6%A4%9C%E7%B4%A2%E7%B5%90%E6%9E%9C%E3%82%92%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B
その他
<調査環境>
Lotus Domino Designer 8.5.3
Microsoft Internet Explorer 8
この記事は九州地区ノーツパートナー会技術部会(西部ガス情報システム 株式会社)によって作成されました。