脱机数据的排序、搜索和筛选

2008-07-24 15:20:56.0     推荐:0    收藏:0    评论:0     来源:中国IT实验室

DataView还有一个复杂的构造函数,可以设置Table、RowFilter、Sort和RowStateFilter属性,示例代码如下:

vue.Table=tbl;
vue.RowFilter=”Country=’USA’”;
vue.Sort=”City DESC”;
DataViewRowState dvrs=DataViewRowState.ModifiedOriginal;
vue.RowStateFilter=dvrs; //仅查看修改过的行的原始值
或 vue=new DataView(tbl,”Country=’USA’”,”City DESC”,dvrs);


DataView类的Count属性,返回可以通过DataView看到的数据行数。

DataRowView类

DataTable类通过DataRow对象访问数据项;DataView类通过DataRowView对象访问数据项,其功能与DataRow类似。 DataView vue=new DataView(tbl);
DataRowView row=vue[0];
Console.WriteLine(row[“CompanyName”]);


DataView中搜索数据

DataView类通过RowFilter和RowStateFilter属性支持筛选,它还支持通过Find和FindRows方法搜索,其用法与DataTable类的Find方法类似。

Find方法

设置DataView对象的Sort属性后,根据Sort属性所指定的列来调用Find方法,提供一个值或一组值作为参数。Find方法的返回值是一个整型值,代表查找到的行所在DataVier中的索引,如果没查找到符合条件的值,则返回-1。 DataView vue=new DataView(tbl);
vue.Sort=”ContactName”;
int intIndex=vue.Find(“Fran Wilson”);
if(intIndex<>-1)
Consol.WriteLine(vue[intIndex][“CompanyName”]);


FindRows方法

DataTable的Find方法根据DataTable对象的PrimayKey属性中所指定的列进行搜索,所以至多返回一条符合条件的数据行。DataView的Find方法根据Sort属性所指定的列进行搜索,可能有多个符合条件的值,但其只返加一个符合条件的索引值。

DataView类提供FindRows方法来处理其返回的多个数据行,FindRows方法返回符合搜索条件的DataRowView对象数组。 DataView vue=new DataView(tbl);
vue.Sort=”Country”;
DataRowView[] aRows=vue.FindRows(“Spain”);
if(aRows.Length==0)
Consol.WriteLine(“No rows Find”);


修改DataRowView对象

DataRowView修改DataView的一行数据类似DataRow修改DataTable的一行数据,DataRowView对象也有BeginEdit、EndEdit、CancelEdit和Delete方法。

DataRowView的AddNew方法返回一个新的DataRowView对象,但只到其调用EndEdit方法后,新行才被真正的添加到相应的DataTable中。 DataView vue=new DataView(tbl);
DataRowView row=vue.AddNew();
row[“……”]=”…”;

row.EndEdit();


DataView创建DataTable

DataView类的ToTable方法返回一个DataTable对象,其中仅包括DataView的RowFilter属性设置可见的行。 DataTable tblAllCustomers=new DataTable(“Customers”);
DataView vue=new DataView(tblAllCustomers);
vue.RowFilter=”Country=’Spain’”;
DataTable tblSpanishCustomers=vue.ToTable(“SpanishCustomers”);


以上代码由DataView创建的DataTable将包含DataView中所有列,可以通过DataView的ToTable的重载方法来控制生成的DataTable所包含的列。 DataTable tblSpanishCustomers;
tblSpanishCustomers=vue.ToTable(“SpanishCustomers”,true,
new string[] {“City”,”Country”});


其中第二个参数代表是否返回的新列组合的结果集是否是唯一值。相当于SQL查询中的distinct的功能。

[上一页]   [第1页]   [第2页]  
您可以针对本文进行:[评论]  [收藏]  [推荐]  
  • 共有0条评论  点击查看更多评论
  • 网友评论仅供网友表达个人看法,并不表明e800同意其观点或证实其描述
我想发表评论:
用户名密码
  • 匿名发表
    验证码: