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

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

Answers

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

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

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

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

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

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

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

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

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

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

Код здесь

Dim dtdata As New DataTable() dtdata = CType(bndsData.DataSource, DataTable)

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

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

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

Если вы хотите использовать что-то более описательное, чем немой массив, не прибегая к использованию 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 иначе это не сработает. Вот почему я храню существующее значение, устанавливаю datagridview как привязать его в true, выполняю свою работу, а затем перезагружаю его, как это было.

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

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

BindingSource[Name].AddNew()

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




Tags



Источник: http://code.i-harness.com/ru/q/4d87f



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Привязка данных (таблицы в Windows forms C виджет DataGridView C#) Вязание болеро крючком видео уроки для начинающих

Datagridview как привязать Datagridview как привязать Datagridview как привязать Datagridview как привязать Datagridview как привязать Datagridview как привязать