无法获取DataSet删除行的值的问题

来源:互联网 发布:单片机晶振电路的作用 编辑:程序博客网 时间:2024/05/20 02:24
//染整分缸进仓 
 if (ds.HasChanges(DataRowState.Deleted))//删除的行
  {
      drDelete = ds.Tables[0].Select(null, null, DataViewRowState.Deleted);
  }

foreach (DataRow dr in drDelete)
{
    rfglDDL.DTData[j] = new ServiceRFGL.DTStru();
    rfglDDL.DTData[j].Line = int.Parse(pageCommon.StringIsNull(dr["Line", DataRowVersion.Original]));//行号
    rfglDDL.DTData[j].TRAN_NO = txtRef_NO.Text.Trim();
    rfglDDL.DTData[j].H_Line = int.Parse(pageCommon.StringIsNull(dr["H_Line", DataRowVersion.Original]));
    rfglDDL.DTData[j].BZ_State = 3; //辅助标志1:新增2:修改3 删除 (表:无该字段XSC 2008-02-19)
    j++;                   
}
网上找的说明

(1)DataSet中的数据如果发生了更改,同时有添加、修改、删除的数据,是否能够一次性的更新到数据库呢呢?   
  我只会一行一行的更新,而且首先检查该行状态是"Added"、"Modified"、"Deleted",然后调用不同的存储过程,并且将各列的数据作为参数传递给存储过程。感觉累死了,最主要的是感觉这样做性能好象不会好(DataSet有其它更新方法吗?)。   
    
  (2)如果DataSet的数据已经被Deleted,不能用DataRow获取该行数据了,那怎么知道要删除哪一行呢?   

以下代码示例显示了表中所有已删除行的值。已删除的行没有   Current   行版本,因此在访问列值时必须传递  
 DataRowVersion.Original。   
    
  DataTable   catTable   =   catDS.Tables["Categories"];   
    
  DataRow[]   delRows   =   catTable.Select(null,   null,   DataViewRowState.Deleted);   
    
  Console.WriteLine("Deleted   rows:/n");   
    
  foreach   (DataColumn   catCol   in   catTable.Columns)   
      Console.Write(catCol.ColumnName   +   "/t");   
  Console.WriteLine();   
    
  foreach   (DataRow   delRow   in   delRows)   
  {   
      foreach   (DataColumn   catCol   in   catTable.Columns)   
          Console.Write(delRow[catCol,   DataRowVersion.Original]   +   "/t");   
      Console.WriteLine();   
  }