编程新手,需要在VB中制作程序以在后台与Excel交互
想法是有两个组合框,一个“国家”,另一个“城市”(如果选择国家,城市列表将减少到该国家;如果选择城市,将自动选择国家);
我有一个 DataGridView,它显示 excel 电子表格中的两列,即人的名字和姓氏。
因此,给定城市或国家/城市,将显示居住在该国家/地区的人员列表。
此外,我正在尝试制作一个搜索框,当您在文本字段中输入内容时,根据您迄今为止输入的内容,它将过滤 GridView 中的名字(包含您输入的内容)。
到目前为止,我已经设法让其他事情正常工作,例如具有不同选项的单选按钮和复选框。
我找不到与组合框和搜索字段有关的任何东西(没有按钮,因此需要进行“实时”过滤过程)。
我对 SQL 很满意,所以到目前为止我一直在使用 sql 将查询发送到 excel 并检索 GridView 的信息。
能否请你帮忙? (可能会提供我应该如何编码的模板......)
我正在使用 Visual Basic 2012 和 OleDB 4.0(如果我没记错的话)进行连接。
鉴于下面的评论,我为搜索栏找到的解决方法是创建一个按钮,然后使其尽可能小并通过“将其发送到后面”将其隐藏在搜索栏后面,因为它看起来不可见完全禁用它...
然后我为按钮使用了以下代码:
Private Sub BtSearch_Click(sender As Object, e As EventArgs) Handles BtSearch.Click
Try
FillSearchResults("SELECT First_Name, Last_Name FROM [Database$] WHERE Country LIKE '%" & Country.Text & "%'")
Country.Text = dt.Rows(0).Item(1)
Catch ex As Exception
MsgBox("Not Found")
End Try
End Sub
对于文本字段(当用户按 Enter 时出现搜索结果):
Private Sub CountrySearch_TextChanged(sender As Object, e As EventArgs) Handles CountrySearch.TextChanged
Me.AcceptButton = BtSearch
End Sub
下一步:我可能会尝试应用过滤器,这样用户就不必按 Enter 来更新 GridView
我将在此处发布任何开发,以便按照建议,如果其他人有同样的问题,请更清楚地看到后续...
最佳答案
您可以申请Filter
到BindingSource
对于 DataGridView
.您可以将该代码放在 ComboBox
的事件处理程序中。的SelectedIndexChanged
事件:
Private Sub myComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles myComboBox.SelectedIndexChanged
bindingSourceForMyDataGridView.Filter =
"SomeColumn LIKE '%" & myComboBox.SelectedValue & "%'"
End Sub
ComboBox
还有其他处理程序可能更适用,例如 SelectedValueChanged
或 TextChanged
.还有其他值可能更适用,这取决于 ComboBox
正在填充,例如 .Text
或 .SelectedText
.
关于.net - 使用 VB.net 和 excel(组合框和搜索),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29747123/