对于包含 item = 数据行的组合框,如何将 ValueMember 指向其中一列



我将项目添加到组合框中,如下所示:

For each R as DataRow in MyDataTable.Rows
  If R("ID") > 10 then MyCombo.Items.Add(R)
Next

现在我需要将DisplayMember和ValueMember设置为数据行的一列:

MyCombo.ValueMember = R("ID")
MyCombo.DisplayMember = R("Name")

我知道使用"R"没有意义,因为它在这一点上没有提及任何东西,但它只是表明我的意思;-)

ValueMember的文件中写道:表示DataSource属性值的单个属性名称的字符串,或解析为最终数据绑定对象的属性名称的以句点分隔的属性名称的层次结构

我知道我可以将行添加到一个新的数据表中,并将其设置为DataSource,但因为你可以将任何对象添加到组合框项中,所以直接使用行会很好,只是不知道如何将特定列作为字符串进行引用。?

也许您不能直接使用行对象。我想要使用Valuemember,您需要将项对象包装在实现ilist接口的集合中。在旧的MS Access时代,组合框项目具有固有的Display-和ValueMember属性,我在.Net组合框控件中总是错过这一点。我的工作是使用这个类,然后它可以用于所有的组合框:

Class oComboItems
    Public items As New List(Of oDVpairs)
    Class oDVpairs
        Implements IComparable(Of oDVpairs)
        Private myDM As String
        Private myVM As Object
        Sub New(DM As String, VM As Object)
            myDM = DM
            myVM = VM
        End Sub
        Public ReadOnly Property DM() As String
            Get
                Return myDM
            End Get
        End Property
        Public ReadOnly Property VM() As Object
            Get
                Return myVM
            End Get
        End Property
        Public Function CompareTo(other As oDVpairs) As Integer Implements IComparable(Of oDVpairs).CompareTo
            Return Me.myDM.CompareTo(other.myDM)
        End Function
    End Class
    Public Sub AddItems(DisplayMember As String, ValueMemeber As Object)
        items.Add(New oDVpairs(DisplayMember, ValueMemeber))
    End Sub
    Public ReadOnly Property DisplayMember() As String
        Get
            Return "DM"
        End Get
    End Property
    Public ReadOnly Property ValueMember() As Object
        Get
            Return "VM"
        End Get
    End Property
End Class

现在将我的数据行(或任何其他对象)添加到组合框:

 Dim CI As New oComboItems
 For Each R As DataRow In DT_U.Rows
      If R("medlnr") > 10 Then
           CI.AddItems(R("name"), R("ID"))
      end if
 Next
CI.items.Sort()
MyCombo.DataSource = CI.Items
MyCombo.DisplayMember = CI.DisplayMember
MyCombo.ValueMember = CI.ValueMember

相关内容

  • 没有找到相关文章

最新更新