SQLクエリからデータを取得しているDataGridViewがあります(既にテーブルにデータがある場合)。私は、変更が保存されている場合は変更を保存したり、作成したものを保存したりするための保存および更新ボタンを持っています。しかし..DataGridView SQLにバインド - プログラムで行を追加する
私は、DataGridViewに挿入する詳細を入力できる別のフォームにそれらを取り込む別のボタンがあります。私は問題を取得しています場所です、私は以下のエラーを取得しておいてください。私のコードの
Rows cannot be programmatically added to the datagridview's row collection when the control is data-bound
エキス、以下の任意のアイデアですか?私は保存ボタンがSQLテーブルを更新するDataGridViewを編集可能にする必要がありますが、保存ボタンでもこれを更新(挿入)する別のフォームから行を挿入する必要があります。
形態1つのコード:
Imports System.Data
Public Class AuditForm
Private DAdapter As New SqlClient.SqlDataAdapter()
Private BSource1 As New BindingSource()
Private Sub AuditForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim EmployeeDataset As New DataSet
Dim sSQL As String
If LoadSettings() = False Then
MsgBox("Error: Unable to Load Settings", vbOKOnly + vbCritical)
Me.Close()
End If
With DG_Audit
'General GridView Settings
.AutoGenerateColumns = False
.AllowUserToAddRows = False
.AllowUserToDeleteRows = True
.AllowUserToOrderColumns = False
.MultiSelect = False
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.ReadOnly = False
.DataSource = BSource1
'General GridView Formatting
.RowsDefaultCellStyle.BackColor = Color.White
.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
.RowHeadersDefaultCellStyle.SelectionBackColor = Color.Khaki
.DefaultCellStyle.SelectionBackColor = Color.Khaki
.DefaultCellStyle.SelectionForeColor = Color.Black
End With
End Sub
Private Sub BTLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTLoad.Click
GetData("SELECT * FROM AdminCS_Audit WHERE Audit_CUser = '" & AdminCB.Text & "' " &
"AND Audit_Submitted IS NULL")
End Sub
Private Sub BTSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTSave.Click
DAdapter.Update(CType(BSource1.DataSource, DataTable))
'DAdapter.Update(CType(DG_Audit.DataSource, DataTable))
End Sub
Sub GetData(ByRef cmd As String)
Try
Dim cnt As String = gConnection
DAdapter = New SqlClient.SqlDataAdapter(cmd, cnt)
Dim cmdBuilder As New SqlClient.SqlCommandBuilder(DAdapter)
Dim AuditData As New DataTable()
AuditData.Locale = System.Globalization.CultureInfo.InvariantCulture
DAdapter.Fill(AuditData)
BSource1.DataSource = AuditData
Catch ex As Exception
MsgBox(ex.Message, vbOKOnly + vbCritical, "SQL Error")
End Try
End Sub
End Class
形態2コード新しい行から追加されるであろう。 インポートSystem.Data
Public Class AuditDetailAdd
Private Sub btOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOK.Click
Dim PassFail As String
If RB_Passed.Checked = True Then
PassFail = "Pass"
ElseIf RB_Failed.Checked = True Then
PassFail = "Fail"
Else
PassFail = ""
End If
AuditForm.DG_Audit.Rows.Add(Nothing, Nothing, TickForm.AdminCB.Text, CB_Field.Text, L_Action.Text, L_Time.Text, TB_Reason.Text, PassFail, TB_Comments.Text)
Me.Close()
End Sub
End Class