我花了整个上午的谷歌搜索并浏览这个网站,只是没有找到任何似乎有用的东西。我在form1上有一个组合框,它从数据源tblCardTypeDD获取其显示值。其显示成员是sCardType,其值成员是iCardTypeID。其所选成员是来自tblInventory的fkCardTypeID。
当我点击一个按钮时,弹出一个简单的datagridview,允许我添加更多卡片类型以供下拉使用。目前我一直在尝试将代码添加到保存按钮单击方法,但我找不到实际更新组合框的组合。
我一直在尝试以下方法:
frmInventory.SEquipTypeComboBox.DataSource = Nothing
frmInventory.SEquipTypeComboBox.DataSource = Me.EngDBbeDataSet.tblCardTypeDD
但执行上述操作后,下拉列表变为空白。
任何帮助都将不胜感激。
答案 0 :(得分:0)
您应该查看此页面,也许它会帮助您:
http://msdn.microsoft.com/en-us/library/w67sdsex.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
如果没有:
如果将断点放在“重置”组合框数据源绑定的位置,请检查数据源是否包含要在组合框中看到的新值。它可能听起来很愚蠢,但它经常发生错误,如果是这种情况你知道问题不在于绑定
此外,在没有任何数据源并再次按照您的方式添加数据源之后,您应该再次告诉哪个列将成为显示成员:
ComboBox1.DisplayMember = "Column1"
虽然如果你看一下我告诉你的网站,你应该看一下这个注释,告诉你如何暂停和恢复绑定而不是丢弃数据源并再次添加它。
虽然如果您使用数据表,值应该会自动更改,并且没有理由丢弃并重新绑定组合框。
-
为了证明你不需要重新绑定,我很快就制作了一段非常脏的代码来证明它。
form1有一个绑定到数据表的组合框,它还有一个按钮来调用名为form2的第二个表单。
form2有一个按钮,可以向Datatable添加2行,然后返回第一个屏幕。
代码表1:
Public Class Form1
Private dataSet As New DataSet("DataSet1")
Private dataTable As DataTable = dataSet.Tables.Add("DataTable1")
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
dataTable.Columns.Add("Column1")
Dim row1 As DataRow = dataTable.NewRow()
row1("Column1") = "Data1"
dataTable.Rows.Add(row1)
Dim row2 As DataRow = dataTable.NewRow()
row2("Column1") = "Data2"
dataTable.Rows.Add(row2)
ComboBox1.DataSource = dataTable
ComboBox1.DisplayMember = "Column1"
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim form2 As New Form2(dataTable)
form2.Show()
End Sub
End Class
代码表2:
Public Class Form2
Private _dataTable As DataTable
Public Sub New(ByVal dataTable As DataTable)
InitializeComponent()
_dataTable = dataTable
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim row3 As DataRow = _dataTable.NewRow()
row3("Column1") = "Data3"
_dataTable.Rows.Add(row3)
Dim row4 As DataRow = _dataTable.NewRow()
row4("Column1") = "Data4"
_dataTable.Rows.Add(row4)
Me.Close()
End Sub
End Class