我的组合框没有填充显示屏的menber和value成员。有些人建议我在这里做错了什么。 [英] My combobox is not populating the display menber and value member. Some kindly advise what I did wrong here.

查看:110
本文介绍了我的组合框没有填充显示屏的menber和value成员。有些人建议我在这里做错了什么。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

客户代码

 Dim objSupplier As new csSupplier 
Dim objSList As New List(Of csSupplier)

objSList = objSupplier.GetSupplierList ()
'只测试objectList是否有数据,并且在gridview上显示正常。
DataGridView2.DataSource = objSList

'填充组合框。
cmbSupplierList.DisplayMember =Test
For each x as csSupplier in objSList
Me.cmbSupplierList.DataSource = objSList
Me.cmbSupplierList.DisplayMember = x.SupplierName
Me.cmbSupplierList.ValueMember = x.SupplierID
下一个





类代码

公共财产SupplierID()As Integer 
获取
返回_supplierID
结束获取
设置(值为整数)
_supplierID = value
结束集
结束物业

公共物业供应商名称()作为字符串
获取
返回_sname
结束获取
设置(值为字符串)
_sname = value
结束集
结束属性

'获取供应商列表
公共函数GetSupplierList()作为列表(来自csSupplier)
Dim objDal As new csSQLDALVB
Dim objList As New List(Of csSupplier)
使用dr作为IDataReader = objDal.executespreturndr(GetListOfSuppliers)
而(dr.Read)
Dim par As New csSupplier
par.SupplierID = dr.GetInt32(0)
par.SupplierName = dr.GetString(1)
objList.Add (par)
结束时
结束使用
返回objList
结束函数





我尝试了什么:



尝试在gridview中填充此信息,其工作正常意味着objectList有信息但是组合框只是空的。

这是我的网格数据。

 SuppID SuppName 
1 Rainbow Chicken
2 Evergreen Veggies
3 Albany
4 Jabula Supermarket

解决方案

尝试这样,删除循环部分



 cmbSupplierList.ValueMember =SupplierID
cmbSupplierList.DisplayMember =SupplierName
cmbSupplierList.DataSource = objSList


问题已经解决。

<$ p $ '> Combobox客户端代码
< pre> Private Sub cmbSupplierList_SelectedIndexChanged(sender As System.Object,e As System.EventArgs)处理cmbSupplierList.SelectedIndexChanged
'循环到供应商列表对象
For Each x As csSupplier在objSList'
'映射供应商ID到供应商名称
如果cmbSupplierList.SelectedItem = x.SupplierName那么
lbltest.Text = x.SupplierID
grdSupplierStock.DataSource = objStock.GetIngredientsBySupplier(x.SupplierID)
End如果
下一个
结束子





'表格加载代码



 Private Sub InvetoryDe​​tails_Load(sender As System.Object,e As System.EventArgs)Handles MyBase.Load 
Dim objSupplier As new csSupplier
Dim objSList As New List( of csSupplier)

objSList = objSupplier.GetSupplierList()'分配由类Objec中的方法返回的数组列表
'循环到供应商列表对象
For each x as csSupplier in objSList
cmbSupplierList.Items.Add(x.SupplierName)'在combobox中填充供应商名称
下一个
结束Sub


Client Code

Dim objSupplier As New csSupplier
Dim objSList As New List(Of csSupplier)

objSList = objSupplier.GetSupplierList()
'Just Testing the objectList if it has data, and it displays fine on a gridview.
DataGridView2.DataSource = objSList

'Populating the combobox.
cmbSupplierList.DisplayMember = "Test"
For Each x As csSupplier In objSList
    Me.cmbSupplierList.DataSource = objSList
    Me.cmbSupplierList.DisplayMember = x.SupplierName
    Me.cmbSupplierList.ValueMember = x.SupplierID
Next



Class Code

Public Property SupplierID() As Integer
    Get
        Return _supplierID
    End Get
    Set(value As Integer)
        _supplierID = value
    End Set
End Property

Public Property SupplierName() As String
    Get
        Return _sname
    End Get
    Set(value As String)
        _sname = value
    End Set
End Property

'Get list of Suppliers
Public Function GetSupplierList() As List(Of csSupplier)
    Dim objDal As New csSQLDALVB
    Dim objList As New List(Of csSupplier)
    Using dr As IDataReader = objDal.executespreturndr("GetListOfSuppliers")
        While (dr.Read)
            Dim par As New csSupplier
            par.SupplierID = dr.GetInt32(0)
            par.SupplierName = dr.GetString(1)
            objList.Add(par)
        End While
    End Using
    Return objList
End Function



What I have tried:

Tried populating this info in a gridview, its working fine meaning the objectList has info but the combobox is just empty.
Here is my grid Data.

SuppID  SuppName
1	Rainbow Chicken			
2	Evergreen Veggies			
3	Albany			
4	Jabula Supermarket

解决方案

try like this, remove the looping part

cmbSupplierList.ValueMember = "SupplierID"
cmbSupplierList.DisplayMember = "SupplierName"
cmbSupplierList.DataSource = objSList


The problem has been solved.

'Combobox Client code
<pre>    Private Sub cmbSupplierList_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbSupplierList.SelectedIndexChanged
        'Looping into a suppliers list object
        For Each x As csSupplier In objSList '
            'Mapping in supplier ID into supplier name
            If cmbSupplierList.SelectedItem = x.SupplierName Then
                lbltest.Text = x.SupplierID
                grdSupplierStock.DataSource = objStock.GetIngredientsBySupplier(x.SupplierID)
            End If
        Next
    End Sub



'Form Load Code

Private Sub InvetoryDetails_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim objSupplier As New csSupplier
Dim objSList As New List(Of csSupplier)

    objSList = objSupplier.GetSupplierList() 'Assigning an array list returned by a method in Class Objec List
    'Looping into a suppliers list object
    For Each x As csSupplier In objSList
        cmbSupplierList.Items.Add(x.SupplierName) 'Populating supplier name in combobox
    Next
End Sub


这篇关于我的组合框没有填充显示屏的menber和value成员。有些人建议我在这里做错了什么。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆