一般にサーバーからクライアントに返されるデータは制限する方が望ましいこと、また C1DataSource では FilterDescriptor コレクションエディタを使用してこれを簡単に実行できることを既に説明しました。次に、サーバー側のフィルタ処理を実行する手段をエンドユーザーに提供する方法について説明します。
他の GUI コントロールでもかまいませんが、たとえば、ユーザーがコンボボックスから Product Category を選択し、それによってサーバーから新しいデータが DataGrid にロードされるとします。
サーバー側のフィルタ処理を実装するには、次の手順に従います。
- 簡単な連結で使用されるプロジェクトに、C1DataSource コンポーネントを含む新しいフォームを追加します。このフォームをプロジェクトのスタートアップフォームにすることで、プロジェクトの実行にかかる時間を短縮することができます。
- 前と同様に C1DataSource を確立します。今回は、Categories と Products の2つのビューソースを定義します。ViewSourceCollection で、[追加]ボタンを2回クリックします。EntityViewSourceProperties.EntitySetName プロパティの横で、最初のメンバ(0)には「Categories」を、2番目のメンバ(1)には「Products」を入力します。Products には、次の図に示すようなフィルタを定義します。
- フォームに ComboBox コントロールを追加し、次のプロパティを設定します。
- DataSource = C1DataSource Name (typically C1DataSource1)
- DisplayMember = Categories.CategoryName
- ValueMember = Categories.CategoryID
- フォームに DataGrid コントロールを追加し、次のプロパティを設定します。
- DataSource = C1 DataSource Name (typically C1DataSource1)
- DataMember = Products
- コンボボックスの SelectedValueChanged イベントを処理する次のコードをフォームに追加します。
-
Form_Load イベントに次のコードを追加して、dataGridView コントロールの AutoGenerateColumns プロパティを "true" に設定します。
- アプリケーションを保存、ビルド、および実行します。コンボボックスでカテゴリを選択します。そのカテゴリに関連する製品がグリッドに表示されます。カテゴリを切り替えて、返されるデータを確認してください。前と同様に、グリッド内のすべての項目を編集できます。