Insert new row inside DataGridViewБаза данных не обновляется новой строки
Этот ответ создает впечатление, что база данных должна обновить с rows.add
Некоторые другие сайты имеют инструкции, но формируют перспективу создания базы данных с нуля. У меня уже есть база данных и просто хочу, чтобы глупая вещь принимала новые данные.
Вот что я сделал:
Private Sub InitializeDataGridView()
Try
' Set up the DataGridView.
With Me.DataGridView1
' Automatically generate the DataGridView columns.
.AutoGenerateColumns = True
' Set up the data source.
'bindingSource1.DataSource = GetData("SELECT * FROM Places and Stuff")
MyTable = GetData("SELECT * FROM Places and Stuff")
'MyDataSet = bindingSource1.DataSource
'MyTable = MyDataSet.Tables(0)
.DataSource = MyTable
' Automatically resize the visible rows.
.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
' Set the DataGridView control's border.
.BorderStyle = BorderStyle.Fixed3D
' Put the cells in edit mode when user enters them.
.EditMode = DataGridViewEditMode.EditOnEnter
' Disables Add New Row
.AllowUserToAddRows = False
End With
Catch ex As SqlException
MessageBox.Show(ex.ToString, _
"ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
System.Threading.Thread.CurrentThread.Abort()
End Try
End Sub
Я связывание DGV к столу. Кажется, мне может понадобиться набор данных для обновления, но я не могу понять, как заполнить набор данных таблицей, которая также является базой данных sql. Вы также можете увидеть, где я играл с другими наборами данных/DataTables и т.д.
Я также получил мой DataGridView добавить строку, но база данных лениться:
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
'Determine Last Row Index
Dim dgvrowCnt As Integer = DataGridView1.Rows.Count - 1
If DataGridView1.Rows.Count > 0 Then
Dim myRow As DataRow = MyTable.NewRow
myRow(0) = DataGridView1.Rows(dgvrowCnt).Cells(0).Value + 1
MyTable.Rows.Add(myRow)
Else
Dim myRow As DataRow = MyTable.NewRow
myRow(0) = 230
MyTable.Rows.Add(myRow)
End If
End Sub
Я немного огорчен не будучи в состоянии использовать myRow("<column name here>") = 230
, но мне придется преодолеть это, я думаю.
Я пробовал обновлять и проверять таблицу, чтобы увидеть, нужно ли обновлять мою форму, но это, похоже, не так.
Эта страница http://support.microsoft.com/kb/301248 имеет 2 строки и утверждает, что она делает то, что я надеюсь на: Dim objCommandBuilder As New SwlCammandBuilder(daAuthors) daAuthors.Update(dsPubs, "Authors")
Я не могу получить таблицу в наборе данных, как показано на связывающими линии моего примера.
Насколько я понимаю, это было связано с datagridview, а VS и SQL знают, как общаться. Это кажется простым в принципе. Зачем проходить через все проблемы с привязкой? – ZL1Corvette
Bound означает, что сетка привязана к DataTable (или другой коллекции данных), а не к таблице базы данных. Вам нужна привязка для передачи данных из/в DataTable и Grid (посмотрите на свой метод добавления, добавьте в DataTable, но вы увидите новую строку в Grid благодаря привязке) – Steve
Однако использование DataSet и SqlDataAdapter - это путь, если вы хотите автоматизировать процесс записи изменений в базу данных, но вам нужно изменить этот GetData, чтобы сохранить исходный SqlDataAdpter и повторно использовать его, когда вам нужно – Steve