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();

}