|
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的功能。
|