所以这里发生了什么。我目前正在通过Visual Studio 2010运行VB。我为我的团队创建了一个简单的程序,但它给了我适合的功能。我现在卡住的部分是我创建了一个包含2列的访问数据库。第一列具有用户名,第二列具有各自的UserID。前提是当他们从ComboBox中选择用户名时,它会使用用户ID填充文本框。
当你运行该程序时,我得到它的工作,但无论出于何种原因,如果我选择第一个用户是Peter Griffin,它旁边的字段填充PGriffin,如果我选择Bob Belcher,Archer会弹出文本框然而,当我回到彼得格里芬时,虚假出现在文本框中,如果我回到鲍勃,虚假出现在他面前。所以它在第一次选择他们的名字时起作用,但不是第二次。这是我正在使用的代码:
Private Sub FillCombo()
Dim fillcon As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Jae\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsApplication1\SD Members1.accdb")
Dim query As String = ("SELECT User_Name, User_ID FROM Analysts")
Dim da As New OleDb.OleDbDataAdapter(query, fillcon)
Dim ds As New DataSet
da.Fill(ds)
ComboBox1.ValueMember = "User_Name"
ComboBox1.DataSource = ds.Tables(0)
ComboBox1.SelectedIndex = 0
TextBox10.DataBindings.Clear()
TextBox10.DataBindings.Add("Text", ds.Tables(0), "User_ID")
End Sub
这是在组合框上运行的查询
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim dt As DataTable = ComboBox1.DataSource
Dim dr As DataRow = dt.Rows(ComboBox1.SelectedIndex)
TextBox10.Text = IIf(dr.IsNull("User_ID"), "", dr.IsNull("User_ID").ToString)
End Sub
答案 0 :(得分:1)
摆脱你的SelectedIndexChanged
事件。
'Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBox1.SelectedIndexChanged
' Dim dt As DataTable = ComboBox1.DataSource
' Dim dr As DataRow = dt.Rows(ComboBox1.SelectedIndex)
' TextBox10.Text = IIf(dr.IsNull("User_ID"), "", dr.IsNull("User_ID").ToString)
'End Sub
您已经拥有了DataBinding设置,因此它可以在没有它的情况下工作。
答案 1 :(得分:0)
第一次,SelectedIndexChanged事件可能没有被触发。 我注意到在你的iif中,它返回了isnull的结果,这是假的。
尝试以下方法:
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim dt As DataTable = ComboBox1.DataSource
Dim dr As DataRow = dt.Rows(ComboBox1.SelectedIndex)
TextBox10.Text = IIf(dr.IsNull("User_ID"), "", dr("User_ID").ToString)
End Sub
编辑:LarsTech确实提出了一个有趣的问题。如果您将此事件绑定到User_Id,您是否需要此事件?除非您需要其他功能,否则绑定应该为您提供帮助。