DataView 的一个主要功能是允许在 Windows 窗体和 Web 窗体上进行数据绑定。
另外,可自定义 DataView 来表示 DataTable 中数据的子集。此功能让您拥有绑定到同一 DataTable、但显示不同数据版本的两个控件。例如,一个控件可能绑定到显示表中所有行的 DataView,而另一个控件可能配置为只显示已从 DataTable 删除的行。DataTable 也具有 DefaultView 属性。它返回表的默认 DataView。例如,如果希望在表上创建自定义视图,请在 DefaultView 返回的 DataView 上设置 RowFilter。
若要创建数据的筛选和排序视图,请设置 RowFilter 和 Sort 属性。然后,使用 Item 属性返回单个 DataRowView。
还可使用 AddNew 和 Delete 方法从行的集合中进行添加和删除。在使用这些方法时,可设置 RowStateFilter 属性以便指定只有已被删除的行或新行才可由 DataView 显示。
[C#]
public DataView(
DataTable table,
string RowFilter,
string Sort,
DataViewRowState RowState
);
参数
-
table
- 要添加到 DataView 的 DataTable。 RowFilter
- 要应用于 DataView 的 RowFilter。 "Country = 'UK'", 字段=‘值’ Sort
- 要应用于 DataView 的 Sort。 排序:字段 ASC(DESC) RowState
- 要应用于 DataView 的 DataViewRowState。
[C#]
private void MakeDataView(DataSet ds)
{
DataView dv = new DataView(ds.Tables["Suppliers"], "Country = 'UK'", "CompanyName", DataViewRowState.CurrentRows);
dv.AllowEdit = true; //允许编辑
dv.AllowNew = true; //允许增加
dv.AllowDelete = true;//允许删除
}
///DataViewRowState.CurrentRows :遍历出 包括未更改行、新行和已修改行的当前行。
DataView对象对象定义了DataTable的数据查看方式。数据默认的查看方式是将数据以表格的形式排列,且数据排列的顺序遵循从数据库表中取出数据时排列的顺序,也可以通过DataView对象使数据按照某些规则进行显示。
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = " Provider=Microsoft.Jet.OLEDB.4.0; " +
" Data Source= " + Server.MapPath( " person.mdb " );
conn.Open();
string strSQL = " select * from grade " ;
OleDbCommand Comm = new OleDbCommand(strSQL, conn);
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = Comm;
DataSet ds = new DataSet();
da.Fill(ds, " grade " );
DataView dv = new DataView(ds.Tables[ " grade " ]);
dv.RowFilter = " 数学>80 " ;
dv.Sort = " 学号 desc,数学 desc " ;
Response.Write( " 满足条件的记录有: " + dv.Count + " 条 " );
dg.DataSource = dv;
dg.DataBind();
conn.Close();
}
通过DataView对象的Find()方法可以对数据进行查找,如果找到了,该方法将返回所在行的索引,并可以将查找到的数据输出。
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = " Provider=Microsoft.Jet.OLEDB.4.0; " +
" Data Source= " + Server.MapPath( " person.mdb " );
conn.Open();
string strSQL = " select * from grade " ;
OleDbCommand Comm = new OleDbCommand(strSQL, conn);
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = Comm;
DataSet ds = new DataSet();
da.Fill(ds, " grade " );
DataView dv = new DataView(ds.Tables[ " grade " ], "" , " 姓名 " ,DataViewRowState.CurrentRows);
int rowIndex = dv.Find( " 小张 " );
if (rowIndex == - 1 )
Response.Write( " 没有找到! " );
else
{
Response.Write(dv[rowIndex][ " 姓名 " ].ToString() + dv[rowIndex][ " 数学 " ].ToString());
dg.DataSource = dv;
dg.DataBind();
}
conn.Close();
}