ComboBox控件绑定数据源

最近在研究机房收费系统的组合查询的方法时,看到了ComboBox控件可以进行数据绑定,我觉得这个功能真的很不错,可以给我省去很多的麻烦。

下面是我组合查询窗体界面

ComboBox控件绑定数据源_第1张图片

一、数据转换方法

现在我们开看一下我以前写的一段代码:

1、在界面初始化的时候向ComboBox中添加数据

 

   ''' 
    ''' 添加界面
    ''' 
    ''' 
    ''' 
    ''' 
    Private Sub frmQueryUserWorklog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '向字符中添加数据
        cboFields1.Items.Add(" ")
        cboFields1.Items.Add("操作用户")
        cboFields1.Items.Add("注册日期")
        cboFields1.Items.Add("注册时间")
        cboFields1.Items.Add("注销日期")
        cboFields1.Items.Add("注销时间")
        cboFields1.Items.Add("操作电脑")
        cboFields1.DropDownStyle = ComboBoxStyle.DropDownList
        cboFields1.SelectedIndex = 0                                                                                                                           End Sub

2、对文本框中的内容进行数据转换

 

    ''' 
    ''' 改变用户工作记录字符串
    ''' 
    ''' 匹配用户信息
    ''' strUser,返回匹配用户信息的字符串
    ''' 
    Public Function ChangeUserFields(ByVal strUserInfo As String) As String      
        '返回用户字符   
        Dim strUser As String
        Select Case strUserInfo
        Case "操作用户"
             strUser = "UserNo"
        Case "注册日期"
             strUser = "LoginDate"
        Case "注册时间"
             strUser = "LoginTime"
        Case "注销日期"
             strUser = "LogoutDate"
        Case "注销时间"
             strUser = "LogoutTime"
        Case "操作电脑"
             strUser = "ComputerName"
        Case Else
             strUser = " "
        End Select

        Return strUser
    End Function

二、ComboBox控件绑定数据之自建数据表

现在看一下我现在所用方法的代码

 

  ''' 
    ''' 添加界面
    ''' 
    ''' 
    ''' 
    ''' 
    Private Sub frmQueryUserWorklog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '设置cboFields的类型
        cboFields1.DrawMode = DrawMode.Normal
        cboFields1.DropDownStyle = ComboBoxStyle.DropDownList
        cboFields1.FlatStyle = FlatStyle.Flat

        '定义数据表
        Dim dt As DataTable = New DataTable
        dt.Columns.Add("Value")
        dt.Columns.Add("Name")

        '向第一行中添加数据
        Dim dr0 As DataRow = dt.NewRow
        dr0("Value") = "UserNo"
        dr0("Name") = "操作用户"
        dt.Rows.Add(dr0)

        '向第二行中添加数据
        Dim dr1 As DataRow = dt.NewRow
        dr1("Value") = "LoginDate"
        dr1("Name") = "注册日期"
        dt.Rows.Add(dr1)

        '向第三行中添加数据
        Dim dr2 As DataRow = dt.NewRow
        dr2("Value") = "LoginTime"
        dr2("Name") = "注册时间"
        dt.Rows.Add(dr2)

        '向第四行中添加数据
        Dim dr3 As DataRow = dt.NewRow
        dr3("Value") = "LogoutDate"
        dr3("Name") = "注销日期"
        dt.Rows.Add(dr3)

        '向第五行中添加数据
        Dim dr4 As DataRow = dt.NewRow
        dr4("Value") = "LogoutTime"
        dr4("Name") = "注销时间"
        dt.Rows.Add(dr4)

        '向第六行中添加数据
        Dim dr5 As DataRow = dt.NewRow
        dr5("Value") = "ComputerName"
        dr5("Name") = "电脑名称"
        dt.Rows.Add(dr5)

        '向cboFields中添加数据源
        cboFields1.DataSource = dt

        '在cboFields中ListControl中显示的属性
        cboFields1.DisplayMember = "Name"
        '在cboFields中ListControl中实际的属性
        cboFields1.ValueMember = "Value"
    End Sub

三、ComboBox控件绑定数据之数据库

1、数据库表的字段


2、代码展示

 

''' 
    ''' 添加界面
    ''' 
    ''' 
    ''' 
    ''' 
    Private Sub frmQueryUserWorklog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'定义数据库字符
        Dim sqlConnectStr As String = "Data Source=" ";Initial Catalog=ComputerRoomCharge_sys;User ID=sa;Pwd=123456"
        '获得字符串连接
        Private ReadOnly strConnection As String = System.Configuration.ConfigurationManager.AppSettings("sqlConnectStr")
        '设置连接
        Dim conn As SqlConnection = New SqlConnection(strConnection)
        '定义命令
        Dim cmd As New SqlCommand
        '定义适配器
        Dim sqlAdapter As SqlDataAdapter
        '定义数据集
        Dim ds As New DataSet
        'sql语句
        Dim strSql As String = "select UserNo,UserName from T_UserInfo "
        '给cmd赋值
        cmd.CommandText = strSql
        cmd.CommandType = CommandType.Text
        cmd.Connection = conn
        sqlAdapter = New SqlDataAdapter(cmd)

        Try
            If conn.State = ConnectionState.Closed Then
                conn.Open()
            End If

            '填充数据集
            sqlAdapter.Fill(ds)

        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            Close(conn)
            Dispose(cmd)
        End Try


        cboFields1.DataSource = ds
        cboFields1.ValueMember = "Value"
        cboFields1.DisplayMember = "Name"
        cboFields1.SelectedIndex = 0
    End Sub

四、总结

1、对于上面提到的三种方法,我认为第一种方法还是不值得推荐的,因为对于此控件绑定数据的功能,有其自己的好处,即理解容易,有操作简单,不容易写乱。对于第二种和第三种方法就要根据具体情况而定了,如果数据库中没有自己想要绑定的数据就采用方法二、如果数据库中有自己想要绑定的数据就采用方法三。

2、对于数据库绑定也可以在其控件属性中按照提示可以进行逐步操作,我这里就不为大家演示了,大家可以自己去尝试一下。

3、对于数据源的绑定类型还包括服务、对象、SharePoint与其数据库绑定的原理都是相通的,相信大家都可以举一反三也。

你可能感兴趣的:(ComboBox控件绑定数据源)