うなまな Blog

VB覚え書き

AILight Banner
AILight Blog

プロフィール

うなまな Blog

目次

Blog 利用状況

記事分類

過去の記事

タグ

DataGridViewのコンボボックスで未選択にするには

DataGridViewのセルをDataGridViewComboBoxColumnにしてDataSourceを指定した場合に、
DataSourceの内容が

コード 名称
1
2
3

DisplayMember = "名称"
ValueMember = "コード"

だったら、実際には、1,2,3しか選択できません。
これを未選択(Null値)も可能なようなするには、ようするに、上のデータの先頭に、
Nullの行を追加してやればいいんです。

コード 名称
Null  
1
2
3

DataGridViewでDataGridViewComboBoxColumnを利用する事は多いと思うので、DataTableの先頭
にNull行を追加するプロシージャを作成しました。

''' 
''' DataTableの先頭にNull値を挿入します
''' 
''' 対象となるDataTable
''' 表示列名
''' 連結値列名
''' 
Private Sub NullValueDataTable(ByRef dt As DataTable, _
                               ByVal DisplayMember As String, _
                               ByVal ValueMember As String)
    Try
        ''ValueMemberをNull値許可にする
        dt.Columns(ValueMember).AllowDBNull = True
        ''新しいNull行を生成
        Dim newRow As DataRow = dt.NewRow
        newRow(DisplayMember) = " "
        newRow(ValueMember) = DBNull.Value
        ''既存DataTableの先頭にNull値を挿入
        dt.Rows.InsertAt(newRow, 0)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub
利用方法は、
Dim dgvc As New DataGridViewComboBoxColumn
Dim dtCode As New DataTable
''ここでDataTableにデータを読み込む処理を実装

Call NullValueDataTable(dtCode, "名称""コード")
With dgvc
    .DataPropertyName = "フィールド名"
    .DataSource = dtCode
    .DisplayMember = "名称"
    .ValueMember = "コード"
End With
こんな感じですね。
うーーん。説明が下手ですね。。。
ちなみに、DataGridViewのセルにNullを設定したい場合は、Ctrl + 0で設定できます。

投稿日時 : 2006年2月21日 10:01


コメントを追加

#  ルイヴィトン アウトレット 2013年3月9日 18:32 ルイヴィトン アウトレット

突然訪問します失礼しました。あなたのブログはとてもすばらしいです、本当に感心しました!
タイトル
名前
URL
コメント