为自定义类型设置DataView(或DataTable.DefaultView)RowFilter

时间:2011-02-26 06:03:21

标签: c# .net rowfilter custom-type

我正在开发一个关于datagridview过滤的应用程序。我正在使用dataview的RowFilter属性来过滤数据。我的数据库表包含int& varchar数据类型字段。我想在RowFilter属性中使用“LIKE”查询来过滤数据视图,但“LIKE”仅用于字符串数据类型而不用于int数据类型。所以我想将int数据类型字段转换为varchar数据类型,但我不想改变我的表结构。我只想将数据类型临时更改为我的过滤条件。

有人可以帮我解决这个问题吗?

string colname="ProductID";
string condition="111";
DataView dv = new DataView();
dv.Table = ds.Tables[0] ;
dv.RowFilter ="CAST ("+colname+" AS TEXT) LIKE '"+ condition+"%'"  ;

3 个答案:

答案 0 :(得分:13)

RowFilter由.NET执行,而不是SQL Server。它支持一组有限的表达式,这些表达式在Framework文档中有描述。

http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx

您应该能够使用LIKE以及CONVERT,但与SQL服务器不同,它需要.NET类型。

dv.RowFilter ="CONVERT("+colname+", System.String) LIKE '"+ condition+"%'"  ;

答案 1 :(得分:0)

您可以转换整数...

  SELECT * FROM table WHERE CAST(field AS TEXT) LIKE '%123%'

答案 2 :(得分:-1)

你可以使用

Convert(varchar(20),value)

cast(value is varchar)