65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.27/5 (7投票s)

2005年7月28日

1分钟阅读

viewsIcon

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

第二步是在你的窗体中创建一个子程序,用于加载组合框项目并在你的组合框对象中选择默认值。组合框从数据库中填充数据,并查找传递的值。如果找到匹配项,则设置 ComboBoxSelectedIndex 属性,否则默认选择第一个项目。

#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。
© . All rights reserved.