zoukankan      html  css  js  c++  java
  • DataRow的各种状态和DataView的两种过滤属性

    DataRow的各种状态
    一个DataRow对象刚被创建之后(DataTable.NewRow())其状态是Detached,是孤立的一个存在.
    所以建立了DataRow之后在DataRow中的单元填充了数据后还要通过DataTable.Rows.Add(DataRow)方法将此DataRow添加到DataTable,DataRow添加到DataTable后, 这个DataRow的状态就转变为Added。
    当修改了这个DataRow后,这个DataRow状态转为Modified.
    当用DataRow.Delete()方法删除DataRow后,DataRow状态将转为Deleted,不过此行还存在在DataTable中的,只是状态改变了,这时用DataTable.Rows.Count查看行数,跟删除前是一样的。只有在调用了DataTable.Remove(DataRow)方法后,此DataRow才被从DataTable移除,状态也回复到Detached孤立状态。
     

     一旦调用了DataTable.AcceptChanges()方法后,所有的行将根据不同的状态做不同的处理,Added、Modified、Unchanged将保留当前值.

    Deleted的行将从DataTable中移除,最后所有的行的状态都置为Unchanged。

    当DataTable是从DataAdapter.Fill(DataSet,DataTable)方法填充而形成的,Fill()方法将自动调用AcceptChanges()方法,将DataTable的行状态都置为Unchanged。并且,如果Fill方法中指定的那个DataTable在要填充的那个DataSet不存在时,会生成一个跟数据源表同样的结构的DataTable并填充数据。  

    DataView的两种过滤属性
    RowFilter 列满足某个条件 例如:"LastName = Smith ",这就是只查看列LastName的值为 Smith 的那些数据行。
    RowStateFilter   RowStateFilter 属性用来设置 DataView 中的行状态筛选器,上面介绍DataRow时介绍了DataRow的状态,一个DataRow可能有五种状态,RowStateFilter就是可以通过这些状态来筛选要查看的行集。其实DataRow不仅有五种状态,DataRow还有版本的问题,比如当DataRow的状态为Modified,即这行已经被修改了,这时这个DataRow就会有两个版本,Current版本和Original版本(修改前的)。
     
    #region DataRow行的集中状态  added,modified,unchanged,delete,detached
                DataRow dr = dt.NewRow();
                dr[0] = 10;
                dt.Rows.Add(dr);
                dt.Rows[0].AcceptChanges();
                dt.Rows[0][0] = 12;
                dt.Rows[0].AcceptChanges();
                dt.Rows[0].Delete();
                dt.Rows.Remove(dr);
                #endregion
  • 相关阅读:
    oracle实例的内存(SGA和PGA)调整,优化数据库性能
    Redhat 安装perl模块
    三、Java基础---------关于继承、构造函数、静态代码块执行顺序示例讲解
    二、Java基础--02
    一、Java基础--01
    提醒用户收到短信
    手机屏幕更改
    查看手机信息和SIM卡信息
    还原和设置手机桌面背景
    wifi的开与关
  • 原文地址:https://www.cnblogs.com/gossip/p/1312385.html
Copyright © 2011-2022 走看看