给你一个成功执行的例子:
myConntion=new SqlConnection(connString);
myConntion.Open();

//Create DataSet
myDataSet=new DataSet();
myDataSet.CaseSensitive=true;

//First table
myCommand=new SqlCommand();
myCommand.Connection=myConntion;
myCommand.CommandText="select * from customers";
DataAdapter=new SqlDataAdapter();
DataAdapter.SelectCommand=myCommand;
DataAdapter.TableMappings.Add("Table","customers");
DataAdapter.Fill(myDataSet); //Second table
myCommand2=new SqlCommand();
myCommand2.Connection=myConntion;
myCommand2.CommandText="select * from orders";
DataAdapter2=new SqlDataAdapter();
DataAdapter2.SelectCommand=myCommand2;
DataAdapter2.TableMappings.Add("Table","orders");
DataAdapter2.Fill(myDataSet); //Create table relation
DataRelation dataRelation;
DataColumn dataColumn1;
DataColumn dataColumn2;
dataColumn1=myDataSet.Tables["customers"].Columns["customerID"];
dataColumn2=myDataSet.Tables["orders"].Columns["customerID"];
dataRelation=new DataRelation("CustomerToOrders",dataColumn1,dataColumn2); //Add relation to DataSet
myDataSet.Relations.Add(dataRelation);
DataViewManager DataSetView=myDataSet.DefaultViewManager;
dataGrid1.DataSource=DataSetView;
dataGrid1.DataMember="customers";

解决方案 »

  1.   

    好像将下面的语句
    DataRelation relHeadBody = ds.Relations.Add("headBody",
    ds.Tables["VoucherHead"].Columns["ID"],
    ds.Tables["VoucherBody"].Columns["ID"]);
    改为:
    DataRelation relHeadBody = new DataRelation("headBody",
    ds.Tables["VoucherHead"].Columns["ID"],
    ds.Tables["VoucherBody"].Columns["ID"]);
    就好了。这是为什么?还是不太明白
      

  2.   

    好像将下面的语句  
    DataRelation  relHeadBody  =  ds.Relations.Add(  "headBody  ",  
                           ds.Tables[  "VoucherHead  "].Columns[  "ID  "],  
                           ds.Tables[  "VoucherBody  "].Columns[  "ID  "]);  
    改为:  
    DataColumn dcHeadID;
    DataColumn dcBodyID;
    dcHeadID = ds.Tables["VoucherHead"].Columns["ID"];
    dcBodyID = ds.Tables["VoucherBody"].Columns["ID"];
    DataRelation relHeadBody = new DataRelation("headBody",dcHeadID,dcBodyID);
    //在 DataSet 中增加该关系
    ds.Relations.Add(relHeadBody);"]); 编译可以通过,运行时也没有报错,但没有显示出预期的结果。