搜索仅包含数字的 datagridview 列

问题描述 投票:0回答:1

我有一个搜索功能,非常适合仅包含文本的 datagridview 列。 datagridview 是使用 excelreader 从 Excel 电子表格生成的。 它将找到该列中以在 Textbox3 中输入的字母开头的所有条目,并将它们列在数据网格中。

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        TryCast(dgvData.DataSource, DataTable).DefaultView.RowFilter =
           String.Format("Diff like '" & TextBox3.Text & "%'")
    End Sub

当我在仅包含“ID_Number”等数字的列上尝试时,我收到以下错误代码

“System.Data.EvaluateException:‘无法对 System.Double 和 System.String 执行‘Like’操作。’”

可以重写它以允许它搜索带有数字的列吗?

我尝试更改 string.format 条目,但 .format 似乎只接受字符串

vb.net search numbers
1个回答
0
投票

正如我在评论中所说,您应该阅读

DataView.RowFilter
属性的文档。这将引导您查看
DataColumn.Expression
属性的文档,以获取这些上下文中支持的类 SQL 语法子集的说明。
LIKE
操作仅支持文本值,因此您需要将数字转换为文本。该文档包含
CONVERT
函数的描述,因此您已准备就绪。再加上我在评论中的建议,在
BindingSource
DataTable
之间使用
DataGridView
进行数据绑定,并使用一些字符串插值来清理连接:

myBindingSource.Filter = $"CONVERT(Diff, System.String) LIKE '{TextBox3.Text}%'"
© www.soinside.com 2019 - 2024. All rights reserved.