Как скопировать одну строку в другую строку в gridview - PullRequest
0 голосов
/ 13 октября 2011

Использование VB.Net

Я хочу скопировать данные одной строки в другую строку.

Я использую флажок в виде сетки, если я нажал флажок и нажал кнопку, а затем выбрал копию строкив новую ячейку (строку)

Ниже код работает для удаления, не работает для копирования строк

Код

 Private Sub btncopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncopy.Click
        For Each m_row As System.Windows.Forms.DataGridViewRow In Me.grvList.Rows
            If m_row.Cells("chksel").Value = True Then
               Me.grvList.Rows.Add(m_row)
             '  Me.grvList.Rows.Remove(m_row)
            End If
        Next
    End Sub

Приведенный выше код показывает ошибку как «Строкапри условии, что он уже принадлежит элементу управления DataGridView. "

Что не так с моим кодом.

Требуется справка по VB.Net Code

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Вы не можете добавить точно такую ​​же строку снова.Вам нужно будет создать новую строку и заполнить ее значениями из строки, которую вы дублируете, а затем добавить новую строку в grvList.Rows

Я не уверен, какие значения у вас есть в каждомячейка, но до тех пор, пока они являются типами значений, должно работать что-то вроде следующего:

    For Each m_row As System.Windows.Forms.DataGridViewRow In Me.grvList.Rows
        If m_row.Cells("chksel").Value = True Then
            'Create new row to hold duplicated values
            Dim NewRow As DataRow = grvList.NewRow()
            'loop thru existing rows to copy values
            For i As Integer = 0 To m_row.Cells.Count - 1
                NewRow(i) = m_row.Cells(i).Value
            Next
            'Add newly create row to table
            Me.grvList.Rows.Add(NewRow)
            '  Me.grvList.Rows.Remove(m_row)
        End If
    Next

Имейте в виду, что если элементы в любой из ячеек являются ссылочными типами, вы все равно будете ссылаться на тот же элементвместо создания копии предмета.Как и вы, просто вызывая add в той же строке, что и вы.

Извините, я пропустил, что строки были строками DataGridView, а не связанными данными, которые должны быть связаны с этим ...case:

            For Each m_row As System.Windows.Forms.DataGridViewRow In Me.grvList.Rows
                If m_row.Cells("chksel").Value = True Then
                    'Create new row to hold duplicated values
                     Dim NewRow As DataGridViewRow = m_row.Clone
                     'Add newly create row to table
                     Me.grvLIst.Rows.Add(NewRow)
                End If
            Next
1 голос
/ 15 февраля 2017
'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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...