级联控件的正确数据结构

时间:2012-11-07 16:09:36

标签: c# .net vb.net

假设我在数据库中有一系列表格(例如用途)有关一系列餐馆菜单项的信息。 所以,例如,我们有10个表:

Rest_1, Rest_2, Rest_3, .... Rest_10 
(Names being more complex, though, in the real situation)

并且每个表都具有EXACT SAME列结构,比如说(只是为了说明目的而做到这一点,请原谅示例的弱点):

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)  
....

现在,我有一个Windows窗体,例如3个组合框和一个复选框:

cboRestaurant
cboMenuCategory
cboPopularity
ckInStock

根据用户选择的内容,DataView显示正确的(已过滤的)信息,然后可用于处理某些信息。

所以,我的情况是我们会:

  1. 填充餐厅组合框
  2. 根据用户选择的cboRestaurant& ckInStock.checked状态,填充cboMenuCategory组合框
  3. 基于1& 2,填充cboPopularity组合框
  4. 根据用户为所有组合框/复选框选择的内容,填充数据视图。
  5. ......再次,我知道这是一个弱小的例子,但我试图传达这个概念。


    所以...根据我在网上提到的内容,我认为最好的情况是:

    1. 查询每个表并将结果存储在DataTable中(我可以这样做)
    2. 将这些数据表存储在数据集中(我可以这样做)
    3. 我不知道该怎么做才能让数据集知道所有数据表是如何相关的(所有具有相同的列名) AND 将组合框绑定到数据集,例如过滤信息基于前一个组合框中选择的内容。

      或者

      创建一个(自定义对象)列表,它将包含所有表中的所有这些变量,然后根据combobox.SelectedIndexChanged \ ckInStock.CheckedChanged事件列出Linq-Query列表 - 这似乎更糟糕了'不断查询和重新查询。


      所以,我的第一个问题是:

      如果解决方案#1是正确的,我如何创建聚合数据集并根据前面的组合框和复选框值使组合框具有正确的过滤数据?

      我的第二个问题是:

      有没有更好的方法来实现这个我完全不知道的东西 - 一个内置的更好的对象,为你做级联过滤,或者如何最好地完成这个呢?

0 个答案:

没有答案