在数据库应用程序中使用运行时 ComboBox






1.27/5 (7投票s)
2005年7月28日
1分钟阅读

41322
如何在运行时使用组合框,添加项目,选择默认值,并返回选择结果。
引言
另一种在运行时操作组合框的方法。我将此设计为一种替代方案,用于操作组合框控件,以添加数据、选择默认值以及读取用户在运行时选择的值。此解决方案还提供了很多功能,因为你可以在运行时将几列数据存储在组合框项目对象中。
背景
我之所以为组合框编写这段程序,是因为我不想在运行时将控件绑定到数据集,并想出了这个解决方案,它在我的环境中一直运行良好。
使用代码
第一步是创建一个类来保存你的组合框项目。通过添加更多属性,可以轻松修改该类以保存组合框的更多信息。
Public Class MACTLS_CB_MCTFHDS
Private _HDS_CDE As Integer
Private _HDS_DESCRIPTION As String
Public Sub New(ByVal HDS_CDE As Integer, ByVal HDS_DESCRIPTION As String)
_HDS_CDE = HDS_CDE
_HDS_DESCRIPTION = HDS_DESCRIPTION
End Sub
Public ReadOnly Property HDS_CDE() As String
Get
Return _HDS_CDE
End Get
End Property
Public ReadOnly Property HDS_DESCRIPTION() As String
Get
Return _HDS_DESCRIPTION
End Get
End Property
Public Overrides Function ToString() As String
Return _HDS_DESCRIPTION
End Function
End Class
第二步是在你的窗体中创建一个子程序,用于加载组合框项目并在你的组合框对象中选择默认值。组合框从数据库中填充数据,并查找传递的值。如果找到匹配项,则设置 ComboBox
的 SelectedIndex
属性,否则默认选择第一个项目。
#Region "Load the Status Codes."
Private Sub loadStatusCodes(ByVal nStatusCode As Integer)
Try
Dim nSQL As String = ""
nSQL = "Select HDS_CDE, HDS_DESCRIPTION from MCTFHDS"
Dim connstr As String = nSQLHelpConnectionString
Dim cnn As New SqlConnection(connstr)
Dim da As SqlCommand = New SqlCommand(nSQL, cnn)
da.CommandType = CommandType.Text
Dim rsDataReader As SqlDataReader
cnn.Open()
rsDataReader = da.ExecuteReader
Dim nItemCount As Integer = 0
Dim nItemMatch As Integer = 0
If rsDataReader.HasRows Then
Do While rsDataReader.Read
Dim nHDS_CDE As Integer = 0
Dim nHDS_DESCRIPTION As String = ""
If IsDBNull(rsDataReader("HDS_CDE")) = False Then
nHDS_CDE = Int(rsDataReader("HDS_CDE"))
If IsDBNull(rsDataReader("HDS_DESCRIPTION")) = False Then
nHDS_DESCRIPTION = Trim(CStr(rsDataReader("HDS_DESCRIPTION")))
HDH_STATUS.Items.Add(New MACTLS_CB_MCTFHDS(nHDS_CDE, nHDS_DESCRIPTION))
If nStatusCode = nHDS_CDE Then nItemMatch = nItemCount
nItemCount += 1
Loop
HDH_STATUS.SelectedIndex = nItemMatch
End If
Catch ex As SqlException
MsgBox(ex.ToString)
End Try
End Sub
#End Region
可以像以下代码类似的方式调用之前的子程序。这将填充组合框并选择从你的数据传递的默认值。
If IsDBNull(rsDataReader("HDH_STATUS")) = False Then
loadStatusCodes(CInt(rsDataReader("HDH_STATUS")))
要读取选定的属性,可以使用以下代码
Dim nSelectedStatus As MACTLS_CB_MCTFHDS
nSelectedCompany = CType(HDH_STATUS.SelectedItem, MACTLS_CB_MCTFHDS)
Dim nHDS_CDE As String = nSelectedStatus.HDS_CDE ' Status Code
Dim nHDS_DESCRIPTION As String = _
nSelectedStatus.HDS_DESCRIPTION ' Status Description
好了,这是我对在运行时管理组合框问题的解决方案,希望有人能从中受益。
历史
- 创建于 2005/07/27 - 版本 1。