Adaloでは複雑な検索は中々難しいですが、簡単なものであればすぐできます。

ユーザーが検索ボックスにキーワードを入力すると、自動的にフィルターがかかるようなやつです。

こんな感じですね。

ではやってみましょう。

まずはText Inputとリストを配置

以下のように、検索用のInputBox(Text Input)を配置し、その下に検索される対象のリストを置きます。

リストの内容は何でもOKです。

僕の場合はPostsというコレクション名にして、以下のようにデータを入れてみました。

こんな感じで、データもテキトーに投入しておきます。

「Search Index」という謎な項目も入ってますが、こちらは後ほど説明しますね。

検索条件を設定する

リストを選択し、Filterを設定します。

リストのAdd Filterから条件を設定します。

Custom FilterでTitleがInput(TextInputの名前)をContainしているもののみを表示します。

以下のように設定します。

赤くInputとなってるのはインプットボックスの名前ですね。

Other Componentから探して選択します。

こんな感じ。

はい、これでできました。

とても簡単です。

しかしこれだと、

「Title」に含まれたものだけが表示されます。

もし僕のDB構成で言うところの、詳細情報の説明書きである「Description」にも入ってる項目からも検索したい、、、!

ということはよくありますよね?

そういった、複数の条件の指定は、標準の機能としてはAdaloはまだサポートできていません。

なので、苦肉の策として、以下にやり方を紹介します。

複数のデータベース項目から検索フィルターをかける方法

答えは単純で、データを登録する際に検索用の項目も追加してあげる方法です。

データベースのリスト(今回で言う「Posts」)に、Search Indexというプロパティを追加します。

今回は、Titleという項目とDescriptionという項目を検索対象にしたいので、

Postをデータベースに登録する際に、Title と Descriptionをくっつけた文字列をこのSearch Indexに追加してあげます。

↑こんな感じです。

投稿をするCreatePost画面を設けます。

その画面からPostをCreateした直後に、そのPostをUpdateします。

そのUpdateの中で上記のようにPostのTitleとPostのdescriptionをSearch Indexの中に突っ込んであげています。

あとは↑こんな感じでさっきのCustom Filterの対象をSearch Indexに変えてあげるだけで、Titleにある文字もDescriptionにある文字も両方検索対象にしてくれます。

動画で確認したい方はこちらもご参考まで↓