私は、ユーザーが検索画面上のデフォルトの検索ボックスに自分の条件を入力し、検索して意味することを想定しています。組み込みの検索は、実際にはデータベース上の検索ではなく、すでに検索したクエリのフィルタであることに注意してください。ユーザーが何か「検索」すると、実際には画面から行が除外されますが、依然としてグリッドにバインドされている基礎となるデータ・コレクション上にあります。
私は組み込みの検索ボックスの動作をインターセプトする方法について知らない。
私が望むと思うものを実装する方法の1つは、クエリを作成し、それを必要な検索条件でパラメータ化し、その周囲に検索画面を構築することです。デフォルトの検索ボックスを非表示にして、より明瞭にすることができます。
たとえば、私はHoursフィールドを持つProjectsテーブルを持っているとします。最初に、Projectsに基づいて「Name contains NameParam」のようなフィルタを追加するクエリを作成します。このパラメータを画面に表示させる(この記事はガイドとして使用してください:http://blogs.msdn.com/b/bethmassi/archive/2010/11/09/creating-a-custom-search-screen-in-visual-studio-lightswitch.aspx)
これは私が見たテクニックです。私はそれを100%快適にしているわけではありません。現時点では、画面クエリが実行された後にクエリパラメータにバインドされたテキストボックスのChangedイベントが発生しますが、現在のバージョンのLSでは機能します。 デザイナーで、(画面の左側にある)クエリパラメータを選択し、 "変更された"イベントのコードを追加します。そのイベントハンドラでは、必要なフィールドを計算できます。例えば、私はこの2つの変数(既にデータ項目として定義)を持っている:
RecordsCount = ProjectsByName.Count.ToString()
TotalHours = ProjectsByName.Sum(Function(project) project.Hours)
(VBコード)
[名前]テキストボックスに何かを入力してヒットするたびに入力するか、またはタブが出て、クエリがで実行されます変更されたイベントハンドラが起動し、プロパティが値をリフレッシュします。
これを実行するには、ページングをオフにする必要があります。それ以外の場合は、現在のページの結果が計算されます。
ページングが必要な場合は、常に2番目のクエリを実行して合計結果を得ることができます。