DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridでTable追加

環境/言語:[Windows XP  VB.NET]
分類:[.NET]

いつもお世話になります。
DataGridにAccessを接続させているのですが、列の追加とかできるものなのでしょうか??
チェックボックスをつけて、チェックがついてるのだけ、編集させるようにしたいのですが、分かりません。
テーブルの方にはつけたくないんで、開いた時だけチェックボックスがあるようにしたいのですが。。。
どうかよろしくおねがいします。
  • 題名: Re[1]: DataGridでTable追加
  • 著者: mor
  • 日時: 2005/11/05 22:08:36
  • ID: 13610
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
こんばんは。

■No13608に返信(とおるさんの記事)
> DataGridにAccessを接続させているのですが、列の追加とかできるものなのでしょうか??
> チェックボックスをつけて、チェックがついてるのだけ、編集させるようにしたいのですが、分かりません。
> テーブルの方にはつけたくないんで、開いた時だけチェックボックスがあるようにしたいのですが。。。

1つのやりかたとして、データベースからの取得時のSQLで、チェックボックス用のダミー列を追加してあげる方法があります。
お世話になります。

■No13608に返信(とおるさんの記事)
列の追加に関して、こんな感じはいかがでしょうか。
下のは、全ての行がDefaultValueでチェックが入るようになっていますが、
チェックを付けるか付けないかは
While oleDataReader.Readの中で判定するとか。

# 例外処理とかDBNull値に対する処理とかは適当orやってないのであしからず…

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim sqlScript As String = "SELECT * FROM TEST"
  Dim dt As DataTable = Me.GetDataTable(sqlScript)
  Me.DataGrid1.DataSource = dt
End Sub

Private Function GetDataTable(ByVal sqlScript As String) As DataTable

  Dim oleConnnection As OleDb.OleDbConnection = New OleDb.OleDbConnection
  oleConnnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;"
  oleConnnection.Open()

  Dim oleDataReader As OleDb.OleDbDataReader
  Dim selectCommand As OleDb.OleDbCommand

  Try
    selectCommand = New OleDb.OleDbCommand
    selectCommand.Connection = oleConnnection
    selectCommand.CommandType = CommandType.Text
    selectCommand.CommandText = sqlScript
    oleDataReader = selectCommand.ExecuteReader()

    Dim dt As DataTable = New DataTable(oleDataReader.GetSchemaTable.TableName)
    'ここでチェックボックス用の列を追加
    Dim checkboxCol As DataColumn = New DataColumn("チェックボックス", GetType(Boolean))
    checkboxCol.DefaultValue = True '規定値
    dt.Columns.Add(checkboxCol)

    'テーブルのスキーマを元にDataTableを作成
    For i As Integer = 0 To oleDataReader.GetSchemaTable.Rows.Count - 1
      dt.Columns.Add(CType(oleDataReader.GetSchemaTable.Rows(i).Item("ColumnName"), String), _
             GetType(String))
    Next
    'DataTableにデータを追加
    Do While oleDataReader.Read
      Dim row As DataRow = dt.NewRow()
      For i As Integer = 0 To oleDataReader.FieldCount - 1
        '先頭列にチェックボックスを追加したので i + 1 となる
       row(i + 1) = oleDataReader.Item(i)
      Next
      dt.Rows.Add(row)
    Loop
    Return dt
  Finally
    If Not selectCommand Is Nothing Then selectCommand.Dispose()
    If Not oleDataReader Is Nothing Then oleDataReader.Close()
    If Not oleConnnection Is Nothing Then oleConnnection.Close()
    If Not oleConnnection Is Nothing Then oleConnnection.Dispose()
  End Try
End Function
  • 題名: Re[2]: DataGridでTable追加
  • 著者: とおる
  • 日時: 2005/11/07 10:13:08
  • ID: 13626
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
morさん意見ありがとうございます。

なおこさん何時もありがとうございます。
こんなやり方があるとは・・・。
素人の素人だとかんじました。。。
また何かあったらよろしくおねがいします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板