Dargombes Romadlon Ответов: 0

Вставка данных в 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 много примеров и исследуйте.

0 Ответов