给你一个成功执行的例子:
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";
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";
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"]);
就好了。这是为什么?还是不太明白
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);"]); 编译可以通过,运行时也没有报错,但没有显示出预期的结果。