DataView类用来表示定制的DataTable的视图。
DataTable和DataView的关系是遵循著名的设计模式--文档/视图模式,其中DataTable是文档,而Dataview是视图。
DataView的Table属性指向相应的数据表,但DataTable并不保存过滤信息。既是对DataView改变之后,DataTable表并不会发生任何变化。
DataView一般通过DataTable.DefaultView 属性来建立,再通过RowFilter 属性RowStateFilter 属性建立这个DataTable的一个子集。
1. RowFilter
dv.RowFilter = "Country = 'USA'";
dv.RowFilter = "EmployeeID >5 AND Birthdate < #1/31/82#";
dv.RowFilter = "Description LIKE '*product*'";
dv.RowFilter = "employeeID IN (2,4,5)";
/*可以使用通配符*和%,它们同LIKE运算符一起使用时显得更有用。它们都表示任意数量的字符,可以相互替代使用。
请注意,如果在LIKE子句中已经有了*或%字符,你必须用方括号将其括起,以免歧义。如果很不幸,字符串中方括号本身也存在了,那么它也必须用将本身括起。*/
dv.RowFilter = "Description LIKE '[[]*[]]product[[]*[]]";
/*Len,IIF和Substring
Len()返回特定表达式的长度。该表达式可以是一个列名,也可以是其他合法的表达式。
Substring()返回指定的表达式自特定位置开始,特定长度的字符子串。 */
IIF(expression, if_true, if_false)
IIF(employeeID<6, Len(lastname) %2 =0, Len(lastname) %2 >0)
2. Sort
//以下代码示例禁用通过 DataView 删除行的功能,并使用 DataView 向基础表中添加新行。
DataTable custTable = custDS.Tables["Customers"];
DataView custView = custTable.DefaultView;
//排序
custView.Sort = "CompanyName";
custView.AllowDelete = false;
DataRowView newDRV = custView.AddNew();
newDRV["CustomerID"] = "ABCDE";
newDRV["CompanyName"] = "ABC Products";
newDRV.EndEdit();
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步