//设有一个DataSet ds中有三个DataTable,分别是dt1,dt2,dt3,可以用下面的方法将dt1,dt2中的行拷到dt3中去:dt3.Clear();
////////////////////////////////////////////////////////
//下面是第一种方法
foreach(DataRow dr in dt1.Rows)
dt3.ImportRow(dr);
foreach(DataRow dr in dt2.Rows)
dt3.ImportRow(dr);
//第二种方法,可以有选择的拷贝
DataRow[] copyRows1 = dt1.Select();foreach (DataRow copyRow in copyRows1)
dt3.ImportRow(copyRow);DataRow[] copyRows2 = dt2.Select("ID='1'");foreach (DataRow copyRow in copyRows2)
dt3.ImportRow(copyRow);
////////////////////////////////////////////////////////////////////
this.dataGrid1.SetDataBinding(ds, null);

解决方案 »

  1.   

    //创建一个DataSet
    DataSet custDS = new DataSet("CustomerOrders");//创建一个DataTable "Orders"
    DataTable ordersTable = custDS.Tables.Add("Orders");
    //创建另一个DataTable "Users"
    custDS.Tables.Add("Users");//向"Orders" DataTable添加三个DataColumn
    DataColumn pkCol = ordersTable["Orders"].Columns.Add("OrderID", typeof(Int32));
    ordersTable["Orders"].Columns.Add("OrderQuantity", typeof(Int32));
    ordersTable["Orders"].Columns.Add("CompanyName", typeof(string));//设置列名为"OrderID"的列为主键列
    ordersTable["Orders"].PrimaryKey = new DataColumn[] {pkCol};//创建"Orders" DataTable的四个DataRow
    for(int i = 0; i <= 4; i ++)
    {
          myDataRow = ordersTable["Orders"].NewRow();
          myDataRow["OrderID"] = i;
          myDataRow["OrderQuantity"] = i;
          myDataRow["CompanyName"] = "Company" + i ;
          ordersTable["Orders"].Rows.Add(myDataRow);
    }//创建两个DataTable的约束关系
    DataColumn parentColumn = myDataSet.Tables["Orders"].Columns["OrderID"];
    DataColumn childColumn = myDataSet.Tables["Users"].Columns["UserID"]; //假设Users这个DataTable有一"UserID" DataColumn
    ordersTable["Users"].ParentRelations.Add(new DataRelation("RelationName", parentColumn, childColumn));//将创建的DataSet与已创建控件dataGrid1数据绑定("Orders" DataTable作为第一个表)
    dataGrid1.SetDataBinding(custDS, "Orders");
      

  2.   

    可以建一个dataview 设置relation
      

  3.   

    我认为把多个结构相同的datatable合成一个datatable,用下面的方法最简单,就是重新生成一个新的datatable,用这种方法写的C#是最少的。例:
    //把多个表合起来的SQL语句
    string querystr="select * from (select * from table1 union all * from table2) t1t2";
    //多个表合起来后的表名
    string tablename="t1t2";
    SqlDataAdapter thisAdapter = new SqlDataAdapter(querystr,ClassSQL.SqlConnection); 
    DataSet ds=new DataSet();
    thisAdapter.Fill(ds,tablename);
    DataTable dt=ds.Tables[tablename];  //把多个表合起来的结果集
      

  4.   

    DataSet ds = new DataSet();
    ds.Merge(olderDs.Tables[0]);
    DataTable dt = olderDs.Tables[1].Copy();
    dt.TableName = ds.Tables[0].TableName;
    ds.Merge(dt);
      

  5.   

    xiaodele(小得乐)的方法解释是最好的,使起来也是最简单的!C#的dataGrid有bug,在dataGrid中选中最后一行的任一列,只要删除最后一行,就会有残影存在,在dataGrid中随便点一下鼠标这残影就没了,bug太明显了!
      

  6.   

    更新合并,
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
      

  7.   

    请参考:
    http://blog.aspcool.com/jiezhi/archive/2005/01/05/1637.html