テクパー2020
テクニカルヘルパー


 VisualBasic アプリ開発入門 

『データグリッドビュー(DataGredView)』の使い方<コンボボックス>

データグリッドビューのセルをコンボボックスにしてみましょう。

コンボボックスにするセルは「性別」で[男]、[女]が選択できるようにします。
プログラムで固定の値を持つ方法と、性別テーブルの値をバインドする方法があります。


◎プログラムで固定の値を持つ方法

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0  

Public Class Form1

    '******************************************************************************
    '*  フォームのロード(イベント処理)
    '******************************************************************************
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'データグリッドビューの列見出し(タイトル名,幅)の定義
        Dim aryColHeader() As String = {"ユーザーID", "操作者名", "パスワード", "性別", "作成日"}
        Dim aryColLength() As Integer = {160, 180, 160, 60, 100}

        'コンボボックスの定義(性別)
        Dim comboBoxCol As New DataGridViewComboBoxColumn
        comboBoxCol.Items.Add("")
        comboBoxCol.Items.Add("男")
        comboBoxCol.Items.Add("女")

        'データグリッドビューの編集(コンボボックスセルがある場合、Columns.Addで列を設定)
        With DataGridView1

            .Columns.Clear()

            'データグリッドビューのプロパティ
            .BackgroundColor = Color.LightGray                          '背景色
            .RowsDefaultCellStyle.BackColor = Color.Honeydew            '行の背景色
            .AlternatingRowsDefaultCellStyle.BackColor = Color.Ivory    '行の交互背景色

            'データグリッドビューの列数の設定(Columns.Addの場合、列数の指定は不要)
            '.ColumnCount = 5

            'データグリッドビューの列情報の設定
            For i As Integer = 0 To 4

                '.Columns(i).HeaderText = aryColHeader(i)               '列ヘッダーのタイトル
                If i = 3 Then                                           '勤務区別(コンボボックス)
                    comboBoxCol.HeaderText = aryColHeader(i)
                    .Columns.Add(comboBoxCol)
                Else
                    .Columns.Add("col" & i.ToString, aryColHeader(i))
                End If
                .Columns(i).Width = aryColLength(i)                     '列の幅

            Next

        End With

    End Sub

End Class
    
◎性別テーブルの値をバインドする方法

 'SQLサーバーのインポート
Imports System.Data.SqlClient

Public Class Form1

    'データベース(SQLサーバー)の定義
    Private dbCon As New SqlConnection()                                'データベースのコネクション
    Private dbCmd As New SqlCommand()                                   'データベースのコマンド
    Private dbDr As SqlDataReader                                       'データベースのデータリーダー

    '******************************************************************************
    '*  フォームのロード(イベント処理)
    '******************************************************************************
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'データグリッドビューの列見出し(タイトル名,幅)の定義
        Dim aryColHeader() As String = {"ユーザーID", "操作者名", "パスワード", "性別", "作成日"}
        Dim aryColLength() As Integer = {160, 180, 160, 60, 100}

        Dim aryList As New ArrayList()

        '性別コンボボックスの定義(性別)
        Dim comboBoxCol As New DataGridViewComboBoxColumn

        'データベース接続(Data Source=サーバー名,Catalog=データベース名)
        dbCon.ConnectionString =
              "Data Source=PUBLIC\SQLEXPRESS;Initial Catalog=dbExpress;Integrated Security=True"
        dbCon.Open()

        '性別テーブルの検索(SQL文)の設定
        Dim strSQL As String = "SELECT seibetu_kanji" _
                              & "  FROM exp_seibetu" _
                              & " ORDER BY seibetu"

        '性別テーブルの検索
        dbCmd.Connection = dbCon
        dbCmd.CommandText = strSQL
        dbDr = dbCmd.ExecuteReader()

        aryList.Clear()
        aryList.Add("")

        '性別テーブルより情報の取得
        While dbDr.Read()

            aryList.Add(dbDr("seibetu_kanji"))

        End While

        'データリーダーの解放
        dbDr.Close()

        'データベース解放
        dbCmd = Nothing
        dbCon.Close()

        '性別コンボボックスにバインド
        comboBoxCol.DataSource = aryList

        'データグリッドビューの編集(コンボボックスセルがある場合、Columns.Addで列を設定)
        With DataGridView1

            .Columns.Clear()

            'データグリッドビューのプロパティ
            .BackgroundColor = Color.LightGray                          '背景色
            .RowsDefaultCellStyle.BackColor = Color.Honeydew            '行の背景色
            .AlternatingRowsDefaultCellStyle.BackColor = Color.Ivory    '行の交互背景色

            'データグリッドビューの列数の設定(Columns.Addの場合、列数の指定は不要)
            '.ColumnCount = 5

            'データグリッドビューの列情報の設定
            For i As Integer = 0 To 4

                '.Columns(i).HeaderText = aryColHeader(i)               '列ヘッダーのタイトル
                If i = 3 Then                                           '勤務区別(コンボボックス)
                    comboBoxCol.HeaderText = aryColHeader(i)
                    .Columns.Add(comboBoxCol)
                Else
                    .Columns.Add("col" & i.ToString, aryColHeader(i))
                End If
                .Columns(i).Width = aryColLength(i)                     '列の幅

            Next

        End With

    End Sub

End Class
    
Copyright (C) 2010 プログラミングのテクニックをあなたに!!(リトル・ヘルパー) All Rights Reserved.