2015-05-03 5 views
0

enter image description hereКак скопировать весь столбец из одного datagridview в другой?

Существует два документа datagridview (dgvReport и dgvReport2). dgvReport показывает данные с сервера после выбора полей (которые работают нормально).

Флажки - это название столбцов в dgvReport. Если пользователь выбирает «Электронная почта», например, столбец и его данные строки «Электронная почта» должны быть добавлены в dgvReport2.

Моя проблема в том, что, когда я выбираю более одного флажка, вывод строки отображается только в первом столбце dgvReport2 не под соответствующим столбцом. Например, на снимке экрана столбец «fname» отображается в столбце электронной почты dgvReport2.

Как я могу привести данные строки под соответствующим столбцом?

Ниже мое кодирование:

'Add dynamic column 
Dim newCol As Integer = 0 

If chkEmail.Checked = True Then 
    Dim column As New DataGridViewTextBoxColumn 
    dgvReport2.Columns.Insert(newCol, column) 

    With column 
     .HeaderText = "email" 
     .AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells 
     .ReadOnly = True 
    End With 

    For rows As Integer = 0 To dgvReport.Rows.Count - 1 
     For colcnt As Integer = 0 To dgvReport.Columns.Count - 17 
      dgvReport2.Rows.Add(dgvReport.Rows(rows).Cells(0).Value) 
     Next 
    Next 

    newCol += 1 
End If 

If chkFname.Checked = True Then 
    Dim column As New DataGridViewTextBoxColumn 
    dgvReport2.Columns.Insert(newCol, column) 

    With column 
     .HeaderText = "fname" 
     .AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells 
     .ReadOnly = True 
    End With 

    For rows As Integer = 0 To dgvReport.Rows.Count - 1 
     For colcnt As Integer = 0 To dgvReport.Columns.Count - 17 
      dgvReport2.Rows.Add(dgvReport.Rows(rows).Cells(1).Value) 
     Next 
    Next 
    newCol += 1 
End If 

ответ

0

я найти ответ на свой вопрос. Надеюсь, что в полной мере это поможет другим, которые ищут тот же вопрос:

заменить

For rows As Integer = 0 To dgvReport.Rows.Count - 1 
    For colcnt As Integer = 0 To dgvReport.Columns.Count - 17 
    dgvReport2.Rows.Add(dgvReport.Rows(rows).Cells(0).Value) 
    Next 
Next 

со следующим:

 If dgvReport2.Rows.Count > 0 Then 
      For rows As Integer = 0 To dgvReport.Rows.Count - 1 
       dgvReport2.Rows(rows).Cells(newCol).Value = 
       dgvReport.Rows(rows).Cells(1).Value 
      Next 
     Else 
      For rows As Integer = 0 To dgvReport.Rows.Count - 1 
       dgvReport2.Rows.Add(dgvReport.Rows(rows).Cells(1).Value) 
      Next 
     End If 
Смежные вопросы