Вставка данных в datagridview из datatable только запись последнего ввода
мне нравится вставлять данные из textbox и пытаться получить отображение в datagridview с помощью datatable,
я могу добиться успеха в первой строке, но у меня есть проблема во второй строке и т. д., Потому что data gridview отображает только последний вход, какова цель, я собираюсь вводить разные данные для каждой строки, пожалуйста, посоветуйте решение Спасибо...
Что я уже пробовал:
Private Sub Create_VTableSell() Dim vRow As System.Data.DataRow Dim i As Integer VTablepenjualan = New DataTable VTablepenjualan.Columns.Add("Name_Items", GetType(String)) VTablepenjualan.Columns.Add("Qty", GetType(Integer)) VTablepenjualan.Columns.Add("Price", GetType(Double)) VTablepenjualan.Columns.Add("Disc%", GetType(Double)) VTablepenjualan.Columns.Add("Sub_Total", GetType(Double)) VTablepenjualan.Columns.Add("Mode", GetType(String)) 'Try For i = 0 To DataGridView1.Rows.Count - 0 'If IsDBNull(DataGridView1.Rows) Then Exit Sub vRow = VTableSell.NewRow vRow.Item(0) = TextBox4.Text vRow.Item(1) = TextBox5.Text vRow.Item(2) = TextBox6.Text vRow.Item(3) = TextBox7.Text vRow.Item(4) = TextBox5.Text * TextBox6.Text vRow.Item(5) = ComboBox1.Text VTableSell.Rows.Add(vRow) Next DataGridView1.Refresh() 'Catch ex As Exception 'End Try End Sub
Michael_Davies
Вы добавляете содержимое набора текстовых полей, содержимое текстовых полей не меняется между каждой итерацией цикла.
Подсчеты основаны на нуле, поэтому вы обычно повторяете DataGridView1.Rows.Count-1 или вы можете получить исключение индекса вне диапазона.
Где VTableSell и VTablepenjualan, вы создаете VTablepenjualan и, кажется, никогда не используете его.
Dargombes Romadlon
я думал о проблеме в цикле, но не знаю, где именно
я бы попробовал поставить рядами.количество-1 объект datagridview, но не отображать какие-либо данные
vTableSell-это суб-имя, vTablepenjualan был объявлен ранее..
Michael_Davies
Цикл привязан к количеству строк в DataGridView1, сколько там записей? Используйте отладчик, чтобы просмотреть код и посмотреть, что происходит.
Dargombes Romadlon
будет много записей, потому что он предназначался для создания каждой строки в одной записи, некоторые из которых я не видел никаких ошибок
Michael_Davies
Хорошо, поскольку это не ясно, измените линию цикла на следующую и посмотрите, что произойдет, а затем используйте отладчик, чтобы пройти через нее и посмотреть, что происходит, и выяснить, что не так.
Для i = от 0 до 10
Dargombes Romadlon
Похоже, что datagridview создает 10 строк в одном и том же вводе на строку, после того как я ввел другое значение, вся строка была заменена новым вводом, похоже, что не создается новая строка за предыдущей строкой
Michael_Davies
Итак, теперь вы видите проблему, вы использовали счетчик строк DGV для вставки данных, и не было никаких строк для подсчета, поэтому никакие строки не вставлялись, изменение цикла for на диапазон чисел доказало это вам.
Данные не меняются между вставками, поэтому вы вставляете одни и те же данные снова и снова.
Все работает нормально, он делает то, что вы просите его сделать, вам просто нужно переосмыслить логику того, что вы пытаетесь сделать, к сожалению, никто не может сделать это за вас.
Dargombes Romadlon
Спасибо за ваш совет теперь у меня есть еще один перспективный вид и технический трюк, но мне все еще любопытно с техникой вставки данных через datatable в datagridview, на данный момент я вернусь к очень простой вставке непосредственно из текстового поля в datagridview с созданием столбца при загрузке формы, а затем добавлю новую строку при нажатии кнопки
Michael_Davies
Вы можете установить источник данных DGV в качестве таблицы, если это то, что вы хотите, используйте Google много примеров и исследуйте.