2011-10-13 4 views
0

VB.Net 사용복사 방법 gridview에서 한 행을 다른 행으로 바꾸기

하나의 행 데이터를 다른 행에 복사하려고합니다. 내가 체크 박스를 눌러 버튼을 누른 다음 새 셀에 행 복사 (행) 코드 아래

이 행 사본을 작동하지 않는, 삭제를 위해 노력하고 있습니다를 선택 클릭 한 경우

나는있는 gridview에서 체크 박스를 사용하고

코드 위의 코드 "이미 제공된 행은 DataGridView 컨트롤에 속한다."등의 오류를 보이고

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 

내 코드가 잘못되었습니다.

VB.Net 코드 도움말이 필요합니다.

답변

2

정확히 같은 행을 다시 추가 할 수 없습니다. 새 행을 만들고 대신에 복사하는 행의 값으로 채우고 grvList에 새 행을 추가해야합니다. 행

각 셀에 어떤 값이 있는지 확실하지 않지만, 그러나만큼 그들은 값의 종류로는 다음과 같이 작동합니다 :

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를 호출함으로써 당신이하는 것처럼.

  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 
+0

당신은 몇 가지 예제 코드를 게시하시기 바랍니다 수 :

미안 해요, 행이 아니라 바인딩 된 데이터 테이블 ...이 경우에 트릭을 할 것보다, DataGridView를 행 하였다 놓친 . – Gopal

+0

예제를 포함하도록 위에서 편집했습니다. – Jay

+0

고마워,이 라인에 "Dim NewRow As DataRow = grvList.NewRow()"오류가 표시됩니다. – Gopal

1
'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 
관련 문제