2024年3月31日发(作者:)
表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。
DataView的功能类似于数据库的视图,他是数据源DataTable的封装对象,可以对数据源进行排序、搜索、
过滤等处理功能,一旦DataView绑定了数据源DataTable的话,如果此时,DataTable中的数据内容发
生变化后,那么DataView也随之发生变化。
注意:
如果不显式指定 DataView 的排序条件,将按 DataView 的相应
DataRow 在 taRowCollection 中的索引来对
DataView 中的 DataRowView 对象进行排序。
应用实例01:
///
/// teFilter
/// 根据RowStateFilter的行的状态作为过滤条件,进行筛选过滤
///
private void DataViewTest02()
{
//如果将 RowStateFilter 设置为 ModifiedCurrent 或 CurrentRows,新行也将是可见的。
//如果将 RowStateFilter 设置为 ModifiedOriginal 和 OriginalRows,已删除的行也将是
可见的。
DataTable dataTable = new DataTable("dataTable");
DataColumn dataColumn = new DataColumn("dataColumn");
(dataColumn);
DataRow dataRow;
for (int i = 0; i < 10; i++)
{
dataRow = ();
dataRow["dataColumn"] = "item " + i;
(dataRow);
}
Changes();
// Create a DataView with the table.
DataView dataView = new DataView(dataTable);
// Change one row's value:
[1]["dataColumn"] = "Hello";
// Add one row:
dataRow = ();
dataRow["dataColumn"] = "World";
(dataRow);
//设置dataview显示的过滤条件,下面的条件是只显示添加或者修改的内容
teFilter = |
edCurrent;
[1].Delete();
[2].Delete();
[3].Delete();
//设置dataview显示的过滤条件,下面的条件是只显示被删除的内容
teFilter = d;
urce = dataView;
nd();
//设置dataview显示的过滤条件,下面的条件是只显更改行与新行、已修改行、当前行
teFilter = tRows;
urce = dataView;
nd();
//设置dataview显示的过滤条件,未更改的行
teFilter = ged;
urce = dataView;
nd();
//设置dataview显示的过滤条件,未更改行,已删除行
teFilter = alRows;
urce = dataView;
nd();
}
应用实例02:
///
/// ter 按查询条件,将DataView中的内容检索出来
/// ("排序列对应列中的任意值") 返回结果是检索出的行索引号
/// DataRowView[] foundRows = ws(new object[] { "1", "山东" }); 按排序定义
的列顺序,查找符合条件的行集合
/// 需要与排序列定义的数目与顺序一致。
///
private void DataViewRowFilter()
{
DataTable dt = new DataTable();
("cityName");
("ID");
//yKey = new DataColumn[] { s["ID"] };
DataRow drCity01 = ();
drCity01["ID"] = "1";
drCity01["cityName"] = "山东";
(drCity01);
DataRow drCity02 = ();
drCity02["ID"] = "2";
drCity02["cityName"] = "天津";
(drCity02);
DataRow drCity03 = ();
drCity03["ID"] = "1";
drCity03["cityName"] = "山东";
(drCity03);
Changes();
DataView view = tView;
//默认这些属性都为true
elete = true;
dit = true;
ew = true;
DataRowView dvRow = ();
dvRow["ID"] = "4";
dvRow["cityName"] = "山东";
dit();
dvRow["cityName"] = "山东1";
t();
();
//按行的具体条件进行过滤 查询表达式的设置详情参见sion 属性
//ter = "cityName = '山东'";
//按搜索条件,将DataView中符合条件的行,检索出来,与数据库用sql查询作用一致。
ter = "cityName like '*山东*'";
//在按行的条件的基础上,按状态继续过滤
teFilter = tRows;
= "ID DESC,cityName ASC";
//Find方法查找出视图中行的索引
//int index = ("3");
//string cityName = view[index]["cityName"].ToString();
//检索条件必须按排序中定义的顺序进行
DataRowView[] foundRows = ws(new object[] { "1", "山东" });
string content = ;
foreach(DataRowView dv in foundRows)
{
content += dv["cityName"].ToString()+"
";
}
(content);
urce = view;
nd();
}


发布评论