Дублирование Строк В DataGridView



Следующий код загружает файл с разделителями табуляции в мой DataGridView (загружает 1 запись из файла данных). Все это прекрасно работает, однако мне нужно продублировать эту запись X раз. Как только строка будет продублирована, мне нужно будет в конечном итоге отредактировать некоторые поля и записать в новый файл с добавленными строками.



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



Предложения?



    Dim file As String = "Temp.txt"
Dim path As String = "C:Temp"
Dim ds As New DataSet
Dim tbl As New DataTable

Try
If IO.File.Exists(IO.Path.Combine(path, file)) Then
Dim ConStr As String = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
path & ";Extended Properties=""Text;HDR=No;FMT=TabDelimited"""
Dim conn As New OleDb.OleDbConnection(ConStr)
Dim da As New OleDb.OleDbDataAdapter("Select * from " & _
file, conn)
da.Fill(ds, "TextFile")
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try

DataGridView1.DataSource = ds.Tables(0)
600   2  

2 ответов:

Вы не можете добавить непосредственно к DataGridView, который привязан к базе данных, потому что данные находятся в другом месте, и DGV просто отображает то, что есть. Чтобы добавить строки в DataTable:

Dim dr = ds.Tables(0).NewRow()

Это создаст новую строку с определенными для нее столбцами на основе таблицы. Добавьте в него данные для нового элемента, а затем добавьте его в таблицу:

dr.Item(0) = "something"   ' add to column one
... etc
ds.Tables(0)Rows.Add(dr)
Вам действительно не нужно было создавать DataSet для того, что у вас есть до сих пор. Альтернатива:
Private myDT As New DataTable      
...
da.Fill(myDT)

Буквально клонировать данные для a строка:

Dim dr As DataRow

For n As Integer = 0 To NumberOfDuplicates
    dr = myDT.NewRow              ' new DataRow
    For c As Integer = 0 To myDT.Columns.Count - 1   ' copy data from 0 to NewRow
        dr.Item(c) = myDT.Rows(0).Item(c)
    Next
    myDT.Rows.Add(dr)            ' add NewRow to datatable
Next n
Обратите внимание, что вам нужно создать новую строку для каждого клона, внутренний цикл копирует данные из строки(0) в каждый новый.
'Hope This helps DGV1 is the datagridview
'To copy Row
Private Sub CopyButton_Click(sender As System.Object, e As System.EventArgs) Handles CopyButton.Click
    CopyRowIndex = DGV1.CurrentRow.Index
End Sub

'To Paste Row
Private Sub PasteButton_Click(sender As System.Object, e As System.EventArgs) Handles PasteButton.Click
    PasteRowIndex = DGV1.CurrentRow.Index
    For index As Int32 = 0 To DGV1.ColumnCount - 1
        DGV1.Rows(CInt(PasteRowIndex)).Cells(index).Value = DGV1.Rows(CInt(CopyRowIndex)).Cells(index).Value
    Next

End Sub

'To Duplicate Rows
Private Sub DuplicateButton_Click(sender As System.Object, e As System.EventArgs) Handles DuplicateButton.Click
    CopyRowIndex = DGV1.CurrentRow.Index
    DGV1.Rows.Add()
    DuplicateRowIndex = DGV1.Rows.Count - 1
    For index As Int32 = 0 To DGV1.ColumnCount - 1
        DGV1.Rows(CInt(DuplicateRowIndex)).Cells(index).Value = DGV1.Rows(CInt(CopyRowIndex)).Cells(index).Value
    Next
End Sub

Comments

    Ничего не найдено.