-1

我有一个文本框和一个按钮。我正在尝试做的是使用已搜索的数据过滤网格视图。我正在搜索的两个字段是 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 时,一切正常。搜索客户名称时,我得到“无法对 System.Int32 和 System.String 执行 '=' 操作。”。

我试图 CONVERT(CustomerName, System.String) 但这并没有解决,但是我认为这让我远离了最初的问题,因为我开始猜测。

我想要一个文本框来搜索客户 ID 和客户姓名。RowFilter 有什么问题,如何解决?

谢谢

4

2 回答 2

4

你有一个概念问题。或者你搜索一个数字或者你搜索一个字符串。
我认为您应该以这种方式更改代码

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
于 2013-04-04T11:19:23.210 回答
0

我猜 CutomerId 是一个整数字段,当您尝试搜索作为字符串字段的名称时,您正在尝试搜索具有字符串值的整数字段。

于 2013-04-04T11:21:37.390 回答