使用数据读取器填充组合框 [英] Fill a Combo box with a data reader

查看:62
本文介绍了使用数据读取器填充组合框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有人用数据读取器填充组合框的例子?

谢谢

Vayse

解决方案

这是一个;你需要在你的类顶部代码:

Imports System.Data.OleDb


Private Sub Form1_Load(ByVal sender As Object,_

ByVal e As EventArgs)处理MyBase.Load

尝试

Dim dbpath As String =" c:\ t\db1.mdb" ;

Dim dbConn As New OleDbConnection(_

" Provider = Microsoft.Jet.OLEDB.4.0; DATA SOURCE ="&dbpath)

dbConn.Open()

Dim dbCommand As New OleDbCommand(_

" SELECT * FROM Customers",dbConn)

Dim dbDR As OleDb.OleDbDataReader = dbCommand.ExecuteReader

do dbDR.Read

ComboBox1.Items.Add(dbDR(" CUSCODE"))

循环

Catch ex As Exception

MessageBox.Show(ex.Message& vbCrLf& ex.StackTrace," Error")

结束尝试

结束子


只是要添加到KitWest的优秀代码,我会创建一个李氏tBoxItem"

等级,这样你就可以同时存储一个值和displayitem。


格雷格


进口系统。 Data.OleDb

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As

System。 EventArgs)处理MyBase.Load

尝试

Dim dbpath As String =" c:\t\db1.mdb"

Dim dbConn作为新的OleDbConnection(_

" Provider = Microsoft.Jet.OLEDB.4.0; DATA SOURCE =" &安培; dbpath)

dbConn.Open()

Dim dbCommand As New OleDbCommand(_

" SELECT * FROM Customers",dbConn)

Dim dbDR As OleDb.OleDbDataReader = dbCommand.ExecuteReader


ComboBox1.BeginUpdate()


执行dbDR.Read

ComboBox1.Items.Add(New ListBoxItem(Cint(dbDR(" CUSCODE"))),
dbDR(" CUSNAME")。ToString))

循环


ComboBox1.EndUpdate()


Catch ex As Exception

MessageBox.Show (ex.Message& vbCrLf& ex.StackTrace,Error)

结束尝试

结束子


结束类


公共类ListBoxItem


私有listItemData作为对象

私有listItemText作为字符串


''这是ComboBox下拉列表中显示的内容

Public Overrides Function ToString()As String

返回listItemText

结束功能


Public Sub New(ByVal itemData As Object,ByVal itemText As String)

listItemData = itemData

listItemText = itemText

结束子


Public ReadOnly属性数据()作为对象

获取

Data = listItemData

结束获取


结束财产


公共ReadOnly属性Text()As String

获取

文字= listItemText

结束获取


结束物业


结束课程


谢谢大家。

另一个问题就是这个。

这个表格上有几个组合框,所以对于速度原因我想

删除表适配器和绑定源,只使用数据读取器。


Me.CostCentresTableAdapter.Fill(Me.AssetsDataSet .CostCentres)


所以我有一个带有这些属性的数据绑定comCostCentres

DateSource = CostCentresBindingSource

显示y会员= CostName

显示价值= CostCode

Selectecd值= AssetsBindingSource - CostCentre


我正确填写组合框,感谢您的代码。但它没有显示选择的CostCentre正确,而且没有更新资产。

我错过了什么步骤?

谢谢

Vayse

尝试


''填写组合框

Me.comCostCentre.DisplayMember = CostName

Me.comCostCentre.ValueMember =" CostCode"

Dim dbConn As New OleDbConnection(conCONNECT)

dbConn.Open()

Dim dbCommand As New OleDbCommand(" SELECT * FROM CostCentres",

dbConn)

Dim dbDR As OleDb.OleDbDataReader = dbCommand.ExecuteReader


comCostCentre.BeginUpdate()


do dbDR.Read

comCostCentre.Items.Add(New ListBoxItem(dbDR(" CostCode")),
dbDR(" CostName")))

循环


comCostCentre.EndUpdate()

dbDR.Close()

dbConn.Close()


Catch ex As Exception

MessageBox.Show(ex.Message& vbCrLf& ex.StackTrace,错误)

结束尝试


" Greg Burns" < BL ******* @ newsgroups.nospam>在消息中写道

news:e6 ************** @ TK2MSFTNGP09.phx.gbl ...

只是添加到KitWest我的优秀代码,我会创建一个ListBoxItem类,这样你就可以存储一个值和displayitem。

Greg



Has anyone an example of filling a combo box with a data reader?
Thanks
Vayse

解决方案

Here''s one; you''ll need at the top of your class code:
Imports System.Data.OleDb

Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As EventArgs) Handles MyBase.Load
Try
Dim dbpath As String = "c:\t\db1.mdb"
Dim dbConn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbpath)
dbConn.Open()
Dim dbCommand As New OleDbCommand( _
"SELECT * FROM Customers", dbConn)
Dim dbDR As OleDb.OleDbDataReader = dbCommand.ExecuteReader
Do While dbDR.Read
ComboBox1.Items.Add(dbDR("CUSCODE"))
Loop
Catch ex As Exception
MessageBox.Show(ex.Message & vbCrLf & ex.StackTrace, "Error")
End Try
End Sub


Just to add to KitWest''s excellent code, I would create a "ListBoxItem"
class so that you can store both a value and displayitem.

Greg

Imports System.Data.OleDb
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Try
Dim dbpath As String = "c:\t\db1.mdb"
Dim dbConn As New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbpath)
dbConn.Open()
Dim dbCommand As New OleDbCommand( _
"SELECT * FROM Customers", dbConn)
Dim dbDR As OleDb.OleDbDataReader = dbCommand.ExecuteReader

ComboBox1.BeginUpdate()

Do While dbDR.Read
ComboBox1.Items.Add(New ListBoxItem(Cint(dbDR("CUSCODE")),
dbDR("CUSNAME").ToString))
Loop

ComboBox1.EndUpdate()

Catch ex As Exception
MessageBox.Show(ex.Message & vbCrLf & ex.StackTrace, "Error")
End Try
End Sub

End Class

Public Class ListBoxItem

Private listItemData As Object
Private listItemText As String

'' This is what is displayed in the ComboBox drop-down
Public Overrides Function ToString() As String
Return listItemText
End Function

Public Sub New(ByVal itemData As Object, ByVal itemText As String)

listItemData = itemData
listItemText = itemText
End Sub

Public ReadOnly Property Data() As Object
Get
Data = listItemData
End Get

End Property

Public ReadOnly Property Text() As String
Get
Text = listItemText
End Get

End Property

End Class


Thanks guys.
Another question on this.
Theres several combo boxes on this form, so for speed reasons I''d like to
remove the table adapters and binding sources, and just use Data readers.

Me.CostCentresTableAdapter.Fill(Me.AssetsDataSet.C ostCentres)

So I have a databound comCostCentres with these properties
DateSource = CostCentresBindingSource
Display Member = CostName
Display Value = CostCode
Selectecd Value = AssetsBindingSource - CostCentre

I have the combo box filling correctly, thanks to your code. But it doesn''t
display the select CostCentre correctly, and its not updating the Asset.
What step am I missing?
Thanks
Vayse
Try

'' Fill the combo boxes
Me.comCostCentre.DisplayMember = "CostName"
Me.comCostCentre.ValueMember = "CostCode"

Dim dbConn As New OleDbConnection(conCONNECT)
dbConn.Open()

Dim dbCommand As New OleDbCommand("SELECT * FROM CostCentres",
dbConn)
Dim dbDR As OleDb.OleDbDataReader = dbCommand.ExecuteReader

comCostCentre.BeginUpdate()

Do While dbDR.Read
comCostCentre.Items.Add(New ListBoxItem(dbDR("CostCode"),
dbDR("CostName")))
Loop

comCostCentre.EndUpdate()

dbDR.Close()
dbConn.Close()

Catch ex As Exception
MessageBox.Show(ex.Message & vbCrLf & ex.StackTrace, "Error")
End Try


"Greg Burns" <bl*******@newsgroups.nospam> wrote in message
news:e6**************@TK2MSFTNGP09.phx.gbl...

Just to add to KitWest''s excellent code, I would create a "ListBoxItem"
class so that you can store both a value and displayitem.

Greg



这篇关于使用数据读取器填充组合框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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