Vb.net 保留旧索引值的组合框

Vb.net 保留旧索引值的组合框,vb.net,binding,combobox,oledbdataadapter,Vb.net,Binding,Combobox,Oledbdataadapter,我有一个绑定到DB的组合框,效果非常好 但是,当用户向绑定combobox的表中添加值时,combobox将保留旧值并在表中添加当前项 在这种情况下,表格最初只保存一条记录(“2012”)。用户添加了2013,因此表格现在显示两条记录(“2012”和“2013”),但组合框显示三条记录(“2012”、“2012”和“2013”)。直到我退出应用程序并重新启动,在这种情况下,它正确地反映了表中仅有的两条记录(“2012”和“2013”) 我尝试过cboYear.Datasource=Nothing

我有一个绑定到DB的组合框,效果非常好

但是,当用户向绑定combobox的表中添加值时,combobox将保留旧值并在表中添加当前项

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

我尝试过
cboYear.Datasource=Nothing
cboYear.items.clear
cboYear.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

再次填充前,您需要清除
ds

ds.Clear();
da.Fill(ds);
看看这个:

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


再次填充前,您需要清除
ds

ds.Clear();
da.Fill(ds);
看看这个:

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


嘿,您需要清除数据集或使用dataadapter的每个绑定创建新实例。
Dim ds as new dataset
。希望有帮助您需要清除数据集或使用dataadapter的每个绑定创建新实例。
Dim ds as new dataset
。希望有帮助