『データグリッドビュー(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. |
|