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有什么问题,如何解决?

谢谢

Dataview 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是一个整数字段,当你试图搜索一个名称,这是一个字符串字段,你试图搜索一个整数字段与字符串值