数据库物理表 
CustomerType 客户类型表 
Customers    客户表(客户表的CustomerTypeId字段外键引用CustomerType的Id字段) 这我想大家一看就明白 程序界面 
一个CustomerType维护窗体; 
一个Customer维护窗体,上面有一个DataGridView用于显示客户列表(只读的),还有三个编辑按钮"新增"、"删除"、"修改" 
点“新增”或“编辑”时弹出一个客户信息明细编辑对话框,用于客户信息编辑; 这时候我的数据实体(使用强类型的DataSet)要怎么设计? 
1、20 
一个CustomerType的DataSet,这很简单; 
另外一个Customers的DataSet,因为需要在Customer维护窗体的DataGridView里显示出相应客户类型名称而不是引用Id,这需要用到DataRelation和GetParentRow()来显示出CustomerTypeId所对应的CustomerType的Name。那么这个Customers的DataSet是不是就要包括CustomerType表呢,也就是两个表,一个Customers表、一个CustomerType表? 2、40 
如果Customers里有一个字段,存储的是客户照片。在Customer维护窗口的DataGridView加载时,照片字段肯定是不想让它加载的,只有用户点击具体某一客户条目进行编辑时才显示在客户信息编辑对话框里,这种方式,我又要怎么设计? 
3、40 
在这种UI中换成处理订单,DataGridView用于显示订单信息,其中包括订单总价列(DataRelation->DataColumn->Expression="Sum(child.ItemTotal)),点击某一订单后才弹出订单明细编辑对话框。 
可DataGridView里的订单总价列的值要怎么来呢,我不可能加载DataGridView的时候一下子把所有订单明细加载进来吧? 恳求代码或思路或相关Demo 

解决方案 »

  1.   

    1、20 
    一个CustomerType的DataSet,这很简单; 
    另外一个Customers的DataSet,因为需要在Customer维护窗体的DataGridView里显示出相应客户类型名称而不是引用Id,这需要用到DataRelation和GetParentRow()来显示出CustomerTypeId所对应的CustomerType的Name。那么这个Customers的DataSet是不是就要包括CustomerType表呢,也就是两个表,一个Customers表、一个 CustomerType表? 
    回答:你需要把两个表都放到DATASET里面,然后用DataRelation来处理。
    2、40 
    如果Customers里有一个字段,存储的是客户照片。在Customer维护窗口的DataGridView加载时,照片字段肯定是不想让它加载的,只有用户点击具体某一客户条目进行编辑时才显示在客户信息编辑对话框里,这种方式,我又要怎么设计? 
    回答:如果照片字段只是存储照片的路径,那么可以考虑一次读出来,然后隐藏,如果是存储的照片数据流,那么建议在你DataGridView的编辑按钮事件里重新读取然后回填你的客户端信息编辑对话框。3、40 
    在这种UI中换成处理订单,DataGridView用于显示订单信息,其中包括订单总价列(DataRelation->DataColumn- >Expression="Sum(child.ItemTotal)),点击某一订单后才弹出订单明细编辑对话框。 
    可DataGridView里的订单总价列的值要怎么来呢,我不可能加载DataGridView的时候一下子把所有订单明细加载进来吧?
    回答:同样也是和上面思路一样,在你编辑的事件里计算。
      

  2.   

    1 可以再sql语句中用join
    2,3同意2楼,隐藏或新按钮事件里重读
      

  3.   

    基本同意2楼的!
    第一个你既然要弾出一个框来专门做编辑和新增什么的,何必用DataRelation呢?直接将想要的东西用sql取出来显示就是了。你点编辑的时候传个id(主键)过去就是了啊。