一連のレストランのメニュー項目に関する(目的などの)情報を含む一連のテーブルがデータベースにあるとします。したがって、たとえば、10個のテーブルがあります。
Rest_1, Rest_2, Rest_3, .... Rest_10
(Names being more complex, though, in the real situation)
そして、すべてのテーブルにはまったく同じ列構造があります。たとえば、(説明のためにこれを構成しているだけなので、例の弱点は許してください)。
Col1 (Primary Key) = Menu_Item
Col2 = Menu_Category (Desert, Appetizer, ...)
Col3 = Item_Cost
Col4 = Item_SalePrice
Col5 = Item_Popularity
Col6 = Seasonal_Item (Boolean - Is it seasonal)
Col7 = Min_Order (Boolean - Is there a minimum order from the vendor)
Col8 = In_Stock (Boolean - Is it in stock now)
....
これで、たとえば3つのコンボボックスとチェックボックスを備えたWindowsフォームができました。
cboRestaurant
cboMenuCategory
cboPopularity
ckInStock
また、ユーザーが上記で選択した内容に基づいて、何かを処理するために使用できる正しい(フィルター処理された)情報を表示するDataView。
ですから、私の状況は次のようになります。
- レストランコンボボックスにデータを入力します
- ユーザーが選択したcboRestaurantとckInStock.checkedステータスに基づいて、cboMenuCategoryコンボボックスにデータを入力します。
- 1と2に基づいて、cboPopularityコンボボックスにデータを入力します
- ユーザーがすべてのコンボボックス/チェックボックスに対して選択したものに基づいて、データビューにデータを入力します。
...繰り返しになりますが、これは弱い例ですが、私はその概念を伝えようとしています。
だから...私がオンラインで拾ったものに基づいて、これを達成するための最良のケースであると私が見ているものは次のようになります:
- 各テーブルをクエリし、結果をDataTableに保存します(これは私が行うことができます)
- それらのデータテーブルをデータセットに保存します(これは私ができます)
方法がわからないのは、すべてのデータテーブルがどのように関連しているか(すべて同じ列名を持つ)をデータセットに通知し、前に選択したものに基づいて情報をフィルタリングするなど、コンボボックスをデータセットにバインドすることですコンボボックス。
また
combobox.SelectedIndexChanged
すべてのテーブルからこれらすべての変数を保持する(カスタムオブジェクトの)リストを作成してから、Linq- \イベントに基づいてそのリストをクエリしckInStock.CheckedChanged
ます-これは、常にクエリと再クエリを行っているため、はるかに悪いようです。
だから、私の最初の質問は:
ソリューション#1が正しい場合、コングロマリットデータセットを作成し、コンボボックスに前のコンボボックスとチェックボックスの値に基づいて正しいフィルター処理されたデータを含めるにはどうすればよいですか?
私の2番目の質問は:
私が知らない、これを全体で達成するためのより良い方法はありますか?カスケードフィルタリングを行う組み込みのより良いオブジェクト、またはそれ以外の方法でこれを達成するための最良の方法はありますか?