繁体   English   中英

如何将datagridview1的特定列插入datagridview2?

[英]How to insert specific column of datagridview1 to datagridview2?

这是我的VB.NET Windows Form应用程序的屏幕截图。

1个

在一个Windows窗体中有两个datagridviews(dgvReport和dgvReport2)。 dgvReport选择字段后显示服务器中的数据(工作正常)。

有一些复选框代表dgvReport中的列名。 例如,如果用户选择“电子邮件”,则列及其行数据“电子邮件”应添加到dgvReport2。

我的问题是,当我选择多个复选框时,仅在dgvReport2的第一列而不是在适当的列下显示row的输出。 例如,我选择两个列“ email”和“ fname”,然后当我单击“添加”按钮时,两个列都添加到dgvReport2中,但是列“ fname”数据显示在dgvReport2(第一列)的电子邮件列中。

如何将行数据放在适当的列下? 我以为Index似乎可以达到这个目的,但是现在的问题是如何从datagridview读取数据并将其分配给index以便可以轻松地将其插入另一个datagridview?

下面是我的代码:

'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

我找出自己的问题的答案。 完全希望它将对正在寻找相同问题的其他人有所帮助:

更换

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM