我有一个绑定到数据库的组合框,效果很好。
但是,当用户将值组合到组合框所绑定的表时,组合框保留旧值并在表中添加当前项。
在这种情况下,该表最初只保留一条记录(“2012”)。用户添加了2013,因此该表现在显示两条记录(“2012”和“2013”),但组合框显示三条记录(“2012”,“2012”和“2013”)。 UNTIL我退出应用程序并重新启动,在这种情况下,它正确反映了表中只有两个记录(“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
答案 0 :(得分:1)
您需要在再次填充之前清除ds
:
ds.Clear();
da.Fill(ds);
检查出来:DataAdapter.Fill
您可以在同一个DataTable上多次使用Fill方法。如果存在主键,则传入的行将与已存在的匹配行合并。如果不存在主键,则传入的行将附加到DataTable。