1

我有一个绑定到数据库并且效果很好的组合框。

但是,当用户将值添加到组合框所绑定到的表中时,组合框会保留旧值并添加表中的当前项。

在这种情况下,该表最初只保存一条记录(“2012”)。用户添加了 2013,因此表现在显示了两条记录(“2012”和“2013”​​),但组合框显示了 3 条记录(“2012”、“2012”和“2013”​​)。直到我退出应用程序并重新启动,在这种情况下,它正确反映了表中仅有的两条记录(“2012”和“2013”​​)。

我试过了,,cboYear.Datasource = Nothing没有任何效果。cboYear.items.clearcboYear.DataBindings.clear

这是代码:

Try
    Dim asql As String = ("SELECT * FROM YearsAvailable ORDER BY CurrentYear")
    Dim da As New OleDbDataAdapter(asql, con)
    da.Fill(ds)

    cboYear.ValueMember = "CurrentYear"
    cboYear.DataSource = ds.Tables(0)
    cboYear.SelectedIndex = 0
    CurrentYear = cboYear.Text
    Me.Text = "MSD of Perry Township Compensation Model: " & CurrentYear
Catch ex As Exception
    MsgBox("ERROR filling the YEAR control: " & ex.Message.ToString)
End Try
4

1 回答 1

1

您需要ds在再次填写之前清除:

ds.Clear();
da.Fill(ds);

看看这个:DataAdapter.Fill

您可以在同一个 DataTable 上多次使用 Fill 方法。如果存在主键,则传入行将与已存在的匹配行合并。如果不存在主键,则将传入行附加到 DataTable。

于 2013-07-02T11:14:14.233 回答