表单上的刷新/重新查询组合框保存在单独的表单上

时间:2012-11-14 17:55:12

标签: vb.net .net-4.0

我花了整个上午的谷歌搜索并浏览这个网站,只是没有找到任何似乎有用的东西。我在form1上有一个组合框,它从数据源tblCardTypeDD获取其显示值。其显示成员是sCardType,其值成员是iCardTypeID。其所选成员是来自tblInventory的fkCardTypeID。

当我点击一个按钮时,弹出一个简单的datagridview,允许我添加更多卡片类型以供下拉使用。目前我一直在尝试将代码添加到保存按钮单击方法,但我找不到实际更新组合框的组合。

我一直在尝试以下方法:

frmInventory.SEquipTypeComboBox.DataSource = Nothing
frmInventory.SEquipTypeComboBox.DataSource = Me.EngDBbeDataSet.tblCardTypeDD

但执行上述操作后,下拉列表变为空白。

任何帮助都将不胜感激。

1 个答案:

答案 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