该对象表示对DataSet中的数据表的一种查看方式,系统默认的方式是将数据以表格的形式排列,并且数据是根据从数据表中读取数据时行排列的顺序,通常和涉及数据库时的Sort Order或是在SQL语句中定义的排列依据(升序或降序等)。
使用DataView时候,可以根据不同的实际情况,来使用不同的排序依据(Sort)、过滤条件(Filter)或是查找方法(Search)。
DataView对象用于表示内存中的数据库表视图。使用DataView对象可以创建一个可排序、可过滤的DataTable视图。
DataView对象支持下面三个非常重要的属性。
Sort--用于对DataView所表示的数据行进行排序。
RowFilter--用于对DataView所表示的数据行进行过滤。
RowStateFilter--用于对DataView所表示的数据行依照行状态进行排序(例如,OriginalRows、CurrentRows和Unchanged)。
创建DataView对象最简单的方法是使用DataTable类公开的DefaultView属性,像下面这样:
Dim dataView1 As DataView = dataTable1.DefaultView;
DefaultView属性返回DataTable对象的一个未排序、未过滤的数据视图。
同时也可以使用DataView对象的构造函数,并通过传递一个DataTable对象、一个过滤条件、一个排序条件和一个DataViewRowState过滤条件,来直接实例化一个新的DataView对象。
DataView dataView1 = new DataView(dataTable1, |
上面这个语句将会从表示数据库表Movies的DataTable对象上创建一个新的DataView对象。其中的数据将被过滤来只包含总票房大于 100 000美元的电影记录信息。同时,数据记录将按照电影标题进行升序排列。最后,其实所有实际的数据行都还是存在于DataTable对象中(而未出现的数据行并没有被删除)。
代码清单17-30中的页面示例如何使用DataView对象的方法。在代码清单17-32中,DataView对象缓存在服务器端的Session状态中。通过点击GridView控件中表头的链接,就可以对被缓存的DataView对象进行排序
private void Page_Load(object sender, System.EventArgs e)
{
OleDbConnection Conn= new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"
+"Data Source="+Server.MapPath("regedit.mdb"));
string strSQL = "select * from regedit";
OleDbCommand Comm= new OleDbCommand(strSQL,Conn);
OleDbDataAdapter da= new OleDbDataAdapter();
da.SelectCommand = Comm;
Conn.Open();
DataSet ds = new DataSet();
da.Fill(ds,"regedit");
DataView dv= ds.Tables["regedit"].DefaultView;
dv.RowFilter= "年龄>22";
dv.Sort ="年龄 desc";
Response.Write("满足条件的记录有:"+ dv.Count.ToString() + "条");
dg.DataSource = dv;
dg.DataBind();
Conn.Close();
}