我有一个搜索功能,非常适合仅包含文本的 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 似乎只接受字符串
正如我在评论中所说,您应该阅读
DataView.RowFilter
属性的文档。这将引导您查看 DataColumn.Expression
属性的文档,以获取这些上下文中支持的类 SQL 语法子集的说明。 LIKE
操作仅支持文本值,因此您需要将数字转换为文本。该文档包含 CONVERT
函数的描述,因此您已准备就绪。再加上我在评论中的建议,在 BindingSource
和 DataTable
之间使用 DataGridView
进行数据绑定,并使用一些字符串插值来清理连接:
myBindingSource.Filter = $"CONVERT(Diff, System.String) LIKE '{TextBox3.Text}%'"