vb.net - 使用组合框将 datagridview 绑定到数据源
问题描述
我在问之前读了这些:
VB:如何将 DataTable 绑定到 DataGridView?
http://msdn.microsoft.com/en-us/library/fbk67b6z(v=vs.100).aspx
我有一个非常简单的问题。vb.net winforms 项目包含几个数据表、一个组合框和一个数据网格视图。
我可以选择要显示的数据表:
datagridview1.datasource = dt1 'or dt2 or dt3
这很好用。
我想要做的是从组合框选择中选择要显示的数据表,我之前在其中定义了一个组合框项目集合,因此:
combobox1.item.add("dt1")
combobox1.item.add("dt2")
combobox1.item.add("dt3")
我把这条线
datagridview.datasource = combobox1.SelectedItem
在ComboBox1_SelectedIndexChanged
事件中。
这只是空白我的datagridview。我最初的想法是这失败了,因为我正在将一个字符串传递给需要一个对象的东西,所以我尝试过datagridview.datasource = CObj(combobox1.SelectedItem)
但没有更好的结果。
我做错了什么简单的事情?
解决方案
将 DataTable 对象引用直接添加到ComboBox.Items
集合中。
combobox1.DisplayMember = "TableName"
combobox1.DataSource = {dt1, dt2, dt3}
' Or... (DisplayMember value applies anyway)
'combobox1.Items.AddRange({dt1, dt2, dt3})
在 ComboBox SelectionChangeCommitted事件处理程序中,设置DataGridView.DataSource
:
Private Sub combobox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles combobox1.SelectionChangeCommitted
dataGridView1.DataSource = DirectCast(combobox1.SelectedItem, DataTable)
End Sub
如果您想改用该SelectedIndexChanged
事件,请检查是否SelectedIndex < 0
以及Return
是否是。
推荐阅读
- node.js - Xero API 403 - AuthenticationUnsuccessful 错误
- postgresql - 从 EC2 到 RDS 运行缓慢的 postgres11 逻辑复制
- python - 平铺python游戏(pygame)
- css - 如何突出显示未悬停在悬停上的 div
- nginx - Nginx 目录列表仅用于子路径
- email - Umbraco - 当编辑创建内容时向管理员发送电子邮件通知
- html - 需要帮助理解为什么 css cursor:pointer; 适用于某些元素而不适用于其他元素
- c++ - 1 到 10000 之间的回文数
- javascript - 仅显示那些不在反应中的另一个数组中的元素
- ruby - 如何在我的 Ruby 代码中修复这个隐式错误