Combobox保持旧指数值

时间:2013-07-02 11:11:54

标签: vb.net binding combobox oledbdataadapter

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

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

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

我尝试了cboYear.Datasource = NothingcboYear.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

1 个答案:

答案 0 :(得分:1)

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

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

检查出来:DataAdapter.Fill

  

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