Подтвердить что ты не робот

Как добавить записи в DataGridView в VB.Net?

Как добавить новую запись в элемент управления DataGridView в VB.Net?

Я не использую привязку данных или привязки к базам данных. У меня небольшая форма с тремя полями, и когда пользователь нажимает "ОК", они должны быть добавлены в элемент управления DataGridView в виде новой строки.

4b9b3361

Ответ 1

Если вы хотите добавить строку в конец сетки, используйте метод Добавить() коллекции строк...

DataGridView1.Rows.Add(New String(){Value1, Value2, Value3})

Если вы хотите вставить строку в частичную позицию, используйте метод Вставить() коллекции строк (как также сказал GWLlosa)...

DataGridView1.Rows.Insert(rowPosition, New String(){value1, value2, value3})

Я знаю, что вы упомянули, что не выполняете привязку данных, но если бы вы определили строго типизированный набор данных с одним datatable в своем проекте, вы могли бы использовать это и получить некоторые хорошо типизированные методы для этого, а не полагаться на методы сетки...

DataSet1.DataTable.AddRow(1, "John Doe", true)

Ответ 2

Я думаю, вы должны создать набор данных /datatable в коде и привязать к нему сетку.

Ответ 3

Когда я пытаюсь использовать источник данных из datagridview, который использовал bindingsource, его ошибка accor не может быть выполнена:

---------- Решение ------------

'Я изменил кастинг из bindingsource, который связывается с datagridview

'Код здесь

Dim dtdata As New DataTable()

dtdata = CType(bndsData.DataSource, DataTable)

Ответ 4

Функция, которую вы ищете, это "Вставить". Он принимает в качестве параметров индекс, который вы хотите вставить, и массив значений для использования для новых значений строк. Типичное использование может включать:

myDataGridView.Rows.Insert(4,new object[]{value1,value2,value3});

или что-то в этом роде.

Ответ 5

Если ваш DataGridView привязан к DataSet, вы не можете просто добавить новую строку на свой экран DataGridView. Теперь он будет работать правильно.

Вместо этого вы должны добавить новую строку в DataSet с помощью этого кода:

BindingSource[Name].AddNew()

Этот код также автоматически добавит новую строку на ваш DataGridView дисплей.

Ответ 6

Если вы хотите использовать что-то более описательное, чем немой массив, не прибегая к использованию DataSet, то следующее может оказаться полезным. Он по-прежнему не является строго типизированным, но, по крайней мере, он проверяется компилятором и будет обрабатывать реорганизацию достаточно хорошо.

Dim previousAllowUserToAddRows = dgvHistoricalInfo.AllowUserToAddRows
dgvHistoricalInfo.AllowUserToAddRows = True

Dim newTimeRecord As DataGridViewRow = dgvHistoricalInfo.Rows(dgvHistoricalInfo.NewRowIndex).Clone

With record
    newTimeRecord.Cells(dgvcDate.Index).Value = .Date
    newTimeRecord.Cells(dgvcHours.Index).Value = .Hours
    newTimeRecord.Cells(dgvcRemarks.Index).Value = .Remarks
End With

dgvHistoricalInfo.Rows.Add(newTimeRecord)

dgvHistoricalInfo.AllowUserToAddRows = previousAllowUserToAddRows

Следует отметить, что пользователь должен иметь разрешение AllowUserToAddRows, иначе это не сработает. Вот почему я храню существующее значение, устанавливаю его в true, выполняю свою работу, а затем reset как это было.