我的组合框没有填充显示屏的menber和value成员。有些人建议我在这里做错了什么。 [英] My combobox is not populating the display menber and value member. Some kindly advise what I did wrong here.
本文介绍了我的组合框没有填充显示屏的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 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()'分配由类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屋!
查看全文