判断数据集 是否修改(DataSet)

DataGridView 绑定 的时候记得添加 
  dataGridView1.DataSource = ds;
            dataGridView1.DataMember = ds.Tables[0].TableName;
            //已方便后期判断ds是否修改了
            ds.AcceptChanges();
保存时:
 private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                ds.Tables[0].Select(null, null, DataViewRowState.ModifiedCurrent);
                //ds.Tables[0].Select(null, null, DataViewRowState.ModifiedOriginal);
                this.Cursor = Cursors.WaitCursor;
                //单据明细
                PageCommon pageCommon = new PageCommon();
                //获取单据明细列中有效的行数
                ArrayList arrDTLine = new ArrayList();
                DataRow[] dr;
                if (ds.HasChanges(DataRowState.Modified))//有修改                {
                }
 
 评论(1)┆阅读(5) 

论坛评论

 漫天樱花雨 
 09.13 16:14
 
项目中 生产通知单 ,显示隐藏列的设置 中 有运用到


DataTable的某行删除后,无法获取该行的数据了 的解决方案

 


//染整分缸进仓
 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();  
  }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值