2011年9月23日金曜日

◆LightSwitch、クエリーによるデータのフィルタ処理

基本的なクエリの作成
デザイナー画面の左ペインからCusutomersの「クエリの編集」をクリックする。
image

表示されたクエリデザイナでフィルターの追加をクリック。
フィルター条件として以下のように追加。
また、並べ替えも指定する。
image

これで実行すると、アメリカとカナダの顧客だけがCity順に表示されるようになる。

クエリに基づいた画面の作成
まず、クエリーを作るにはソリューションエクスプローラの「Products」を右クリックして「クエリーの追加」を選択。
image

表示されてクエリーデザイナーで「フィルター」と「並べ替え」を以下のように指定。
image

これで生産中止になっていない商品が名前順に抽出される。

次に、ツールバーの「画面の追加」をクリックし表示されてた画面の追加ダイアログで適当な画面名を指定し、「画面データ」に今作ったクエリーを指定する。
image
image

これを実行すると以下のようにクエリーデータに基づいた商品の一覧詳細画面が表示される。
image

ちなみに、作成したクエリーはソリューションエクスプローラーにて基となるテーブルの配下に表示される。
image

基本的なクエリーの作成と何が違うのかというと、こちらはどう考えてもデータを取得するSQL自体にWhere条件が入っていると考えられるので、基本的なクエリーは全データを持ってきて画面上でのクエリーなのかもしれない。

いや、・・・。
説明を読んでみると、

この種類のクエリはグローバル クエリとして知られています。複数の画面で再利用することができます。両方が同じエンティティ型を返す限り、グローバル クエリを新しいグローバル クエリのソースとして使用できます。

とあるので、単にその画面でしか使えないクエリーと共用クエリーの違いなのかもしれない。

パラメーター クエリの作成
ソリューションエクスプローラからProductsテーブルを右クリックしクエリーを追加。
追加内容は以下の通り。
image

画面でのパラメーター クエリの使用
ソリューションエクスプローラでCurrentProductListをダブルクリックし、デザイナー画面を表示。

ツールバーで「データ項目の追加」をクリック。
image

データ項目の追加ダイアログで「ProductByCatogory」クエリーを選択してOK
image

左ペインにProductByCategoryが追加されるので「クエリーパラメータ」からCategoryIDを選択しプロパティウインドウの「パラメータバインド」欄に「CurrentProduct.SelectedItem.CategoryID」を指定する。
ちなみに、「パラメータバインド」欄にカーソルを置くと以下のような表示になるが、
image
これはコーディング時にインテリセンスが効いた時と同じ状態である。
なので、この状態でタブキーを押すと、「CurrentProduct」が入力される。
続けてピリオドを入力すると、
image
「SelectedItem」が選択候補として表示されるのでそのままタブキーを押す。
また、続けてピリオドを入力すると、
image
選択候補が3つ表示されるので「C」を入力し「CategoriID」が選択された状態でタブキーを押せばよい。
普段コーディングするときと全く同じなので楽ちんだ。

次に、画面にクエリー結果を表示させるために表示コントロールを追加する。
追加方法は、
中央ペインのコントロールツリーから「行のレイアウト Details Column」を選択し表示された「追加ボタン」をクリックして表示されたメニューから「Products By Category」をクリックする。
image

実行すると以下のように選択した「Products」の詳細データの下に、同じカテゴリーを持つ商品が一覧で表示される。
image

ちなみに、上記メニューで「- Seleted Item」の方を選んでしまうと、同一カテゴリーの先頭データだけが明細表示されてしまうようだ。

0 件のコメント:

コメントを投稿