1

我可以使用一些方向,因为我完全被这个难住了......

在 VB.Net 2008 中,我有一个带有名为 TblComplaintBindingSource 的数据绑定源的表单。虽然它有更多字段,但我关心的两个字段是 lComplaintID(表的整数和键)和 lPersonID,它是 Person 表的键。我设置了一个组合框,它使用另一个数据绑定源 QryPersonComboBindingSource。在我的表单上,我有一个组合框 cmbPerson 定义为:

    Me.cmbPerson = New System.Windows.Forms.ComboBox
    Me.cmbPerson.DataBindings.Add(New System.Windows.Forms.Binding("SelectedValue",Me.TblComplaintBindingSource, "lPersonID", True))
    Me.cmbPerson.DataSource = Me.QryPersonComboBindingSource
    Me.cmbPerson.DisplayMember = "FullName"
    Me.cmbPerson.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
    Me.cmbPerson.FormattingEnabled = True
    Me.cmbPerson.Location = New System.Drawing.Point(138, 24)
    Me.cmbPerson.Name = "cmbPerson"
    Me.cmbPerson.Size = New System.Drawing.Size(415, 21)
    Me.cmbPerson.TabIndex = 0
    Me.cmbPerson.ValueMember = "lPersonID"

当我打开记录或使用 BindingNavigator 在记录中移动时,这可以正常工作,cmbPerson 中的选定值显示正确。

但是,当我尝试打开表单并作为搜索结果跳到特定记录(通过 lComplaintID)时,cmbPerson 组合框仍然顽固地空白。这是我跳转到特定记录的代码:

公共子 OpenSpecificRecord(ByVal vintComplaintID 作为整数,ByVal 过滤器作为字符串)

    If Filter = "" Then
        Me.TblComplaintBindingSource.RemoveFilter()
        Me.TblComplaintBindingSource.Filter = "lComplaintID=" & vintComplaintID.ToString()
    Else
        Me.TblComplaintBindingSource.Filter = Filter
    End If
    Me.TblComplaintBindingSource.Find("lComplaintID", vintComplaintID)

    Me.TblComplaintBindingSource.ResetCurrentItem()
    Me.QryPersonComboBindingSource.ResetCurrentItem()

这就是当前代码迭代的样子——我尝试了各种技巧来更新 Me.cmbPerson 的 SelectedValue 并且它顽固地保持空白。

有什么建议去哪里吗?这是我正在尝试做的一件非常标准的事情,对于我的生活,我不知道为什么它不想更新或如何让它服从我的意愿。

提前感谢您提供的任何帮助!

4

0 回答 0