DataTable dt1有列:ID,name,categoRyid,(当作产品表吧)
DataTable dt2有列:ID,CATEGORYNAME,(产品分类表)
关系Delation dr=new Delation("Rcategory",dt2.columns["id"],dt1.columns["categoryid"])
数据集DataSet DS.tables.addrange(new DataTable[] {dt1,dt2});
     ds.relations.add(dr);dt1新增一列:DataColumn dcCategory=new DataColumn("categoryName",typeof(string),"Parent(Rcategory).categoryname");
dt1.columns.add(dccategory);设定Datagridview数据源:datagridview1.datasource=dt1;
datagridview仅显示:ID,NAME,CATEGORYNAME(datagridview的列类型全是DataGridViewTextBoxColumn)现在删除Datagridview的一行
然后
保存按纽:
try
    {
     if (dt1.GetChanges()!= null) :到这里就提示"找不到父关系"Rcategory""              请教各位,有什么更好的解决方案没有?(不要跟我说在采用Datagridviewcombobox列类型)

解决方案 »

  1.   

    其实我想说Datagridviewcombobox列类型 
    这样好处理,直接设置datagridview的columns类型然后将你的数据写上去就可以了
      

  2.   

    我同意一楼的说法  设置columns的类型就好多了
      

  3.   

    我也同意一楼的说法  设置columns的类型就好多了
      

  4.   

    删除数据后,重新绑定数据到dataset
      

  5.   

    1.为什么不用List<>呢,通过sql语句查询关联集合数据,比读取出单张表后的数据再组合,那样更好。
    2.dt1新增一列:DataColumn dcCategory=new DataColumn("categoryName",typeof(string),"Parent(Rcategory).categoryname"); 
    dt1.columns.add(dccategory); 设定Datagridview数据源:datagridview1.datasource=dt1; 
    datagridview仅显示:ID,NAME,CATEGORYNAME(datagridview的列类型全是DataGridViewTextBoxColumn) 
    -----------------------------------------------------------------------------------------
    上面的数据源为dt1,而实际上加入列后,关系中DataTable dt1有列:ID,name,categoRyid,(当作产品表吧) 也没有categoryname这列,你应该对关系表中的数据组合后,然后对关系表的数据再操作。
      

  6.   

    8楼:
    1、为啥要用LIST<>? 组合成List<>,跟组合成DataTable有更好吗?
    2、categoryname是来自dt2:
    DataColumn dcCategory=new DataColumn("categoryName",typeof(string),"Parent(Rcategory).categoryname"); (lookup列)用Datagridviewcombobox列类型就请不要回了(当然是可以这么做,问题是我的这种列不需要其它操作了(仅显示出来就行),比如说订单中的产品子表,客户点选产品,DataGridview一行就带出这一产品的细节出来,放个combobox列岂不有点怪怪
      

  7.   

    已解决。因为你的dataset没有提交