如何使用文本框搜索 datagridview 中的列?我正在使用 vb.net 2010。我有一个带有数据源的 Datagridview。下面是我用于填充 datagridview 的代码。网格视图将有 4 列。
Private Sub LoadProducts()
Dim CS As String = ConfigurationManager.ConnectionStrings("HRMS.My.MySettings.ResortDBConnectionString").ConnectionString
Using con As SqlConnection = New SqlConnection(CS)
Dim da As SqlDataAdapter = New SqlDataAdapter("sp_NET_GetProducts_CompanyID", con)
da.SelectCommand.CommandType = CommandType.StoredProcedure
da.SelectCommand.Parameters.AddWithValue("@CompanyID", CInt(ConfigurationManager.AppSettings("CompanyID")))
Dim ds As DataSet = New DataSet
da.Fill(ds)
ds.Tables(0).TableName = "Products"
dgvProducts.DataSource = ds.Tables("Products")
dgvProducts.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
dgvProducts.AllowUserToResizeColumns = True
dgvProducts.Refresh()
End Using
End Sub
要求:在我的表格中,我将有一个textbox
and button
。文本框将提供搜索字符串。我需要一种方法来在找到字符串时突出显示该行。
我不想打开另一个连接只是为了在数据集上搜索字符串。是否可以直接在 datagridview 中搜索字符串值?
这里有一个示例代码,可以执行您想要的操作:
Dim toSearch As String = "this"
Dim colNum As Integer = 0
Dim res = ds.Tables("Products").AsEnumerable.Where(Function(x) x.Item(colNum).ToString() = toSearch).ToArray
For Each item In res
Dim curRow As Integer = ds.Tables("Products").Rows.IndexOf(item)
dgvSuppliers.Rows(curRow).DefaultCellStyle.BackColor = Color.Yellow
Next
上面的代码查找字符串"this"
在第一列Table "Products"
并改变BackColor
匹配行的数量为黄色。
注意:这个答案旨在以通常理解的“在数据源中搜索术语”的方式回答OP的问题,即依靠查询。此外,人们往往更喜欢线路数量较少的解决方案。这两个原因解释了为什么我依赖这种方法(加上OP的沉默)。 OP 决定回答自己他认为更好的问题。我个人更喜欢像他发布的那样的迭代解决方案(尽管我认为这种方法对于任何使用DataGridView
)。无论如何,如果不知道确切的条件(大小),就无法先验地判断哪个选项更有效。这篇文章的重点是强调我不建议定期依赖基于 LINQ 的方法,只是写下 OP 显然正在寻找的内容(不幸的是,我很不擅长解释一个人的期望而不解释明确正在寻找什么并避免任何类型的通信)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)