InfoPath SharePoint リスト/ライブラリデータのクエリ – 部分一致 –
完全一致クエリの場合、SharePoint リスト クエリのパラメーターをセットしてからクエリ実行が行えましたが、部分一致クエリは標準ではできません。そのため部分一致クエリを行いたい場合は、全件取得して表示してから、InfoPath フォームへの表示に対してフィルターをかける方法をとります。
1. InfoPath で、検索対象のリスト/ライブラリへの受信データ接続を作成します。
・ [データ接続] タブの [外部データの取り込み] – [SharePoint リスト] をクリックし、
データ接続ウィザードで、次のように設定
SharePoint サイトの場所 | リスト/ライブラリがあるサイト URL |
リストまたはライブラリの選択 | 対象のリスト/ライブラリを選択 |
フィールドの選択 | InfoPath フォーム内にクエリ結果として表示したいフィールド (列) を選択 |
データ接続の名前 | 任意 (既定はリスト/ライブラリ名となる) |
フォームを開くとき自動的にデータを取得する | チェックを外す |
2. フォームを次のようにデザインします。
・ テキストボックス (フィールド名:keyword)
・ ボタン
・ 繰り返しテーブル
[SharePoint リスト名] セカンダリ データソースの [dataFields]/[d:SharePointListItem_RW] 繰り返しグループを
ドラッグアンドドロップして配置
3. ボタンのルールを次のように設定
[動作] データ接続を利用してクエリを送信する |
[SharePoint リスト名] データ接続を指定 |
4. 繰り返しテーブルに次のルールを設定します。
[書式設定] |
[条件] [SharePoint リスト名] セカンダリ データソースの [dataFields]/[d:SharePointListItem_RW]/[クエリに利用する列] を選択 が次の値を含まない メインデータソースの keyword フィールド |
[このコントロールを表示しない] にチェックを入れる |
以上でフォームが完成です。
テキストボックスにキーワードを入力し、ボタンをクリックすると、部分一致でフィルターされた結果が表示されます。
※ InfoPath フォーム Web パーツを利用するなどブラウザーフォームとして利用する場合には気にしなくても大丈夫ですが、
このフォームを InfoPath クライアントで開いて利用する場合には、いったん全件データを取得してから表示フィルターをかけて
いるため、取得データ件数によってはフォームのパフォーマンスについて注意が必要です。
奥田理恵