- 題名: データバインドされているDataGridViewへの行の追加について
- 日時: 2007/08/28 18:51:33
- ID: 20365
- この記事の返信元:
- (なし)
- この記事への返信:
- [20366] Re[1]: データバインドされているDataGridViewへの行の追加について2007/08/28 19:18:57
- ツリーを表示
mdbをDataGridView1に読み込んで,Button1で更新する最もシンプルであろうと思われるコードです。
いろいろなTipsページにも同様のものがありますが,参考にしてください。
(例外処理等を必ず加えてください。)
セルの内容を変更し,別の行に移動し,Button1をクリックするとdatabase.mdbの内容を更新します。
Imports System.Data.OleDb
Public Class Form1
Private cn As OleDbConnection
Private da As OleDbDataAdapter
Private ds As DataSet
Private dt As DataTable
Private cb As OleDbCommandBuilder
Private bs As BindingSource
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.cn = New OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=d:\database.mdb;" & _
"Jet OLEDB:Database Password=;")
cn.Open()
Me.da = New OleDbDataAdapter
Me.ds = New DataSet
Me.dt = Me.ds.Tables.Add("Table1")
Me.da.SelectCommand = New OleDbCommand("SELECT * FROM Table1 ORDER BY ID", Me.cn)
Me.cb = New OleDbCommandBuilder(Me.da)
Me.da.InsertCommand = Me.cb.GetInsertCommand
Me.da.UpdateCommand = Me.cb.GetUpdateCommand
Me.da.DeleteCommand = Me.cb.GetDeleteCommand
Me.da.Fill(Me.dt)
Me.bs = New BindingSource
Me.bs.DataSource = Me.dt
Me.DataGridView1.DataSource = Me.bs
AddHandler da.RowUpdated, New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated) 'オートナンバー型対策
End Sub
'オートナンバー型対策
Private Sub OnRowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs)
Dim newID As Integer = 0
Dim idCmd As OleDbCommand = New OleDbCommand("SELECT @@IDENTITY", cn)
If e.StatementType = StatementType.Insert Then
newID = CInt(idCmd.ExecuteScalar())
e.Row("ID") = newID
End If
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
cn.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.da.Update(dt)
End Sub
End Class
分類:[.NET]
アクセスのテーブルとリンクしているDataGridViewに新しい行のデータを挿入したいのですがうまくいきません。
Me.DataGridView1.Rows.Add()を実行しようとすると以下のメッセージが出てしまいます。
コントロールがデータバインドされているとき、DataGridView の行コレクションにプログラムで行を追加することはできません。
データバインドされているDataGridViewはプログラムで行を増やしたり、内容を書き換えたりすることはできないのでしょうか?