2011年9月24日土曜日

◆オートコンプリートボックス(コンボボックス)を使う2(クエリで絞り込み)

前回のサンプルを使ってオートコンプリートボックスをもう少し調べてみる。

まずは画面をひとつ追加する。

    1. 「ソリューションエクスプローラー」で「画面」フォルダーを右クリックして「画面の追加」を選択。
      image
    2. テンプレートおよびデータソースを以下のように指定。
      image
    3. F5キーで実行し、左側のメニューから作成した画面を選択し表示させてみる。
      image
    4. こんどはすでに「Customers」をリレーションが張られているので最初から顧客名がオートコンプリートボックスで表示されているのが判る。
    5. ラベルが「Customers Items」のままになっているので変更する。
      このような修正は実行状態でも可能になっているので、画面右上の「デザイン画面」をクリックする。
      2011-09-24 10h15_40
    6. すると以下のように実行している画面とデザイナーが同時に表示されるので左側のツリーから「Customers Item」を選択し「表示名」プロパティを「CustomerName」に変更してEnterを押す。
      すると実行画面のほうもリアルタイムに変更が反映されているが判る。(WPFっぽくてイケてる)
      右上の「保存」ボタンを押せば修正完了だ。
      image

ココからが本題だが、今のオートコンプリートボックスにはすべての「Customers」が表示されているのでこれを予め絞り込んでみる。

  1. 実行画面を終了させてデザイン画面に戻り、ツールバーから「データ項目の追加」をクリックする。
    image
  2. 「データ項目の追加」ダイアログが表示されるので以下のように指定してクエリーを追加する。
    ここに表示されているクエリーはデータソースを追加すると自動的に作成されるようだ。
    image
  3. デザイン画面の左ペインに追加したクエリーが表示されるので「クエリの編集」をクリックする。
    image
  4. クエリの編集画面が表示されるのでフィルター条件と並べ替えを以下のように指定する。
    image
  5. ソリューションエクスプローラーで「OrderListDetail」をダブルクリックしてデザイン画面を表示させ、「CustomerName」を選択して表示された「プロパティ」画面で「選択肢」プロパティに今作成した「USACustomers」クエリーを指定する。
    image
  6. これで実行して、「Orders List Detail」画面を表示させると「CustomerName」オートコンプリートボックスがUSAで絞りこまれているのが判る。
    2011-09-24 10h50_30
  7. っと書いたが、これでは本当にUSAで絞りこまれているのか分からないので、ちょっと表示をカスタマイズしてみる。
    実行画面で「デザイン」ボタンをクリックして表示された左ペインのコントロールツリーで「CustomerName」を展開。
    表示された「Customers Item」のコントロールを「列のレイアウト」に変更。
    すると、「Customers」の項目が以下に全て表示されるので「Company Name」と「Country」以外はDelキーで削除。
    右側の実行画面表示ペインで「CustomerName」をクリックして展開させると「Country」としてUSAが表示されているのが判る。
    (ん~、ここで実行画面操作もできるというのは新時代だなぁ。)
    image

ここで追加したクエリーは現在の画面のみで有効なクエリなのだが、複数画面で共通に使えるクエリも作ることができる。

    1. 「ソリューションエクスプローラー」で「Customers」を右クリックして「クエリの追加」を選択。
      2011-09-24 11h31_40
    2. 先ほどと同様に「フィルター」と「並べ替え」を指定する。
      今度は「Country」をSpainとしてみた。
      また、名前は「SpainCustomers」と指定した。
      2011-09-24 11h34_20
    3. 「ソリューションエクスプローラー」で「OrdersListDetail」をダブルクリックして画面デザインに戻り、画面上部のツールバーから「データ項目の追加」をクリックする。
      image
    4. 表示された「データの追加」ダイアログで今追加した「SpainCustomers」クエリを選択しOKをクリックする。
      image
    5. デザインツリーで「CustomerName」を選択し、プロパティ画面にて「選択肢」プロパティに今作成した「SpainCustomers」を指定する。
      image
    6. これで実行して「CustomerName」を展開すると今度はSpainのCustomerに絞りこまれているのが判る。
      2011-09-24 11h50_36

もう少し試してみたいが一旦ここで一息。

0 件のコメント:

コメントを投稿