for (int i = 0; i < dataset.Tables[0].Rows.Count; i++)
 {
     ds.Tables[0].ImportRow(dataset.Tables[0].Rows[i]);
 }
  MessageBox.Show(ds.HasChanges().ToString());从dataset.Tables[0]的数据列追加到ds.Tables[0]中
很肯定ds.Tables[0].Rows 的数目已经增加了,但hasChanges()仍为false;
什么原因?

解决方案 »

  1.   

    HasChanges函数是对DataSet中的列有改变时应该返回True,LZ确定你的追加成功了?给DataSet的列增加了?
      

  2.   

    ds.Tables[0].Rows.count的确已经增加
    ds.accetpChange()都加上过,但没有用
      

  3.   

    import 和 merge 应该不会映像 rowstate
      

  4.   

    或者你不用 hasChanges() 而用console.writeln(ds.tables[0].getChanges().rows.count)
      

  5.   

    这是msdn中的一句话:调用 ImportRow 将保留现有的 DataRowState 以及该行中的其他值。查看这句话我猜想,ImportRow 不会导致 hasChanges 的值发生变化ds.Tables[0].ImportRow(dataset.Tables[0].Rows[i]);所以 ds.HasChanges 的返回值和引入行以前一样
      

  6.   

    for (int i = 0; i < dataset.Tables[0].Rows.Count; i++)
       {
           ds.Tables[0].Rows.Add(dataset.Tables[0].Rows[i].ItemArray);
        }使用这种方法增加,hasChange值显示为真,ds.table获得更新了