怎么把内存中一张表的某些行付给另外一张内存中的表??
我的代码是这样的
try
{
string condition=textBox1.Text.Trim();
string yiju=comboBox1.Text.Trim();
DataTable dt=ds.Tables.Add("ntab");// new table
dt=ds.Tables["tabname"].Clone();

DataRow[] rows=ds.Tables["tabname"].Select(""+yiju+"='"+condition+"'");
DataRow[] nrows=dt.Select();
nrows=rows;
for(int i=0;i<nrows.Length;i++)
{
dt.Rows.Add(nrows[i]);
}
dt.AcceptChanges();

dataGrid.DataSource=ds.Tables["ntab"];
        dataGrid.SetDataBinding(ds,"ntab");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
异常信息是
该行已经属于另外一张表
??
谢谢

解决方案 »

  1.   

    的确会有这个问题,因为DataSet的行并不是我们平常以为的会是象一个二维数据一样的直接分配了内存,它实际上是DataTable指向一个行对象的引用,因此,你将一个行分一个一个Tabel,另一个Table并不能追加这个相同的行,只能通过
    DataTable.NewRow方法重建一个行,并对这个行的Item进行赋值。
      

  2.   

    楼上是标准答案,顶一下.
    补充一下:DataSet-DataTable和DataTable-DataRow
    它们之间的关系都是这样的。