Dataview Rowfilter
本文关键字:Rowfilter Dataview | 更新日期: 2023-09-27 18:07:25
有一个文本框和一个按钮。我要做的是过滤gridview与已搜索的数据。我要搜索的两个字段是customerID和CustomerName。
我代码:Dim GetAllCusts As New BusinessLayer.Customer
Dim dt As DataTable = GetAllCusts.GetCustomers
Dim dv As New DataView(dt)
dv.RowFilter = String.Format("CustomerID='{0}' Or CustomerName='{0}'", SearchTextbox.Text)
gridview1.DataSource = dv
gridview1.DataBind()
在搜索客户id时一切正常。当搜索客户名称时,我得到"不能在系统上执行'='操作。Int32 and System.String."
我试图转换(CustomerName, System.String),但这并没有解决,但我认为这是导致我远离最初的问题,因为我开始猜测。
我想有一个文本框来搜索客户id和客户名称。RowFilter有什么问题,如何解决?
谢谢
你有一个概念上的问题。或者你搜索一个数字或者你搜索一个字符串。
我认为你应该这样修改你的代码
Dim custID as Integer
if Int32.TryParse(SearchTextbox.Text, custID) Then
' CustomerID is a numeric field - no need to use single quotes'
dv.RowFilter = String.Format("CustomerID={0}", custID)
else
' CustomerName is a string. Use single quotes and double the '
' possible single quotes inside the search box'
dv.RowFilter = String.Format("CustomerName='{0}'", SearchTextbox.Text.Replace("'", "''")
End If
gridview1.DataSource = dv
我猜customerid是一个整数字段,当你试图搜索一个名称,这是一个字符串字段,你试图搜索一个整数字段与字符串值