代码改变世界

[转]CheckedlistBox绑定数据库,并获得所有选中的值(ValueMember)和显示值(DisplayMember)

2008-10-04 09:07  flyingfish  阅读(2784)  评论(0编辑  收藏  举报

http://hi.baidu.com/qzrc/blog/item/f1bdd158ca632c81810a187f.html

CheckedlistBox绑定数据库,并获得所有选中的值(ValueMember)和显示值(DisplayMember)

2006年10月25日 星期三 23:22

CheckedlistBox绑定数据库,并获得所有选中的值(ValueMember)和显示值(DisplayMember)

新建一个窗体:需要两个控件:CheckedlistBox控件 命名为:ChkListSecName
                                   Button控件 命名为:BtnOk

CheckedlistBox控件比较有用到两个属性分别为CheckOnClick为True:表示单击就选中当前行,为False:要点两下才可以选中。(默认值为False)。还有一个属性为ThreeDCheckBoxes为True:表示三维的选中标记,为False:表示表面的显示标记。(默认值为False)。

在当前窗体代码的最上面引用如下代码:Imports System.Data.SqlClient

接着定义两个变量:连接变量(Con)和数据集(ChkListDst)
Dim str As String = "data source=(Local);persist security info=false;user id=sa;password=;initial catalog=TestData"
Dim Con As New SqlConnection(str)
Dim ChkListDst As New DataSet

接着定义一个过程,把CheckedlistBox绑定到数据库
Public Sub ChkListBin()
  Try
     If Con.State = ConnectionState.Closed = True Then '如果连接是关闭的,就执行打开连接
        Con.Open()  '打开连接
     End If
     ChkListDst.Clear()   '清空数据集
     Dim AdpChkList As New SqlDataAdapter("Select SecNo,SecName from DeptData Order By SecNo", Con) '定义数据适配器所获得的值
     AdpChkList.Fill(ChkListDst, "SecName")  '把数据适配器填充到数据集中,表名的映射名为SecName
     ChkListSecName.DataSource = ChkListDst.Tables("SecName") '定义CheckedlistBox的数据源
     ChkListSecName.ValueMember = "SecNo"       '定义CheckedlistBox的Value值,没有直接显示出来
     ChkListSecName.DisplayMember = "SecName"   '定义CheckedlistBox的Display值,直接显示出来
  Catch ex As Exception
     MsgBox(ex.ToString) '出错提醒
  Finally
    If Con.State = ConnectionState.Open = True Then '如果连接是打开的,就执行关闭连接
       Con.Close()  '关闭连接
    End If
  End Try
End Sub

在它窗口的初始化加载的时候,加入刚刚定义的把CheckedlistBox绑定数据库的过程
Private Sub FrmChkList_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
   ChkListBin()
End Sub

在按钮事件中
Private Sub BtnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOk.Click
   Dim N As Integer
   For N = 0 To ChkListSecName.Items.Count - 1
       If ChkListSecName.GetItemChecked(N) = True Then '从第1条到最后一条,只要为True进入判断
          ChkListSecName.SelectedIndex = ChkListSecName.GetItemText(N) '只要为True,让它为当前行
          MsgBox(ChkListSecName.SelectedValue & ChkListSecName.Text)   
          '显示当前行的值(ValueMember)和显示值(DisplayMember)
       End If
   Next
End Sub