none
Unir varios datagridview en uno solo VB.net RRS feed

  • Pregunta

  • Hola, espero puedan ayudarme con mi pequeño gran problema:

    Lo que pasa es que tengo alrededor de 40 datagridviews, en el primero importo un archivo de excel y todos los demas datagridviews contienen una especifica sección del primero es por eso que tengo tantos datagridviews.

    Despues de hacer esto limpio el primer datagridview y lo cargo con un diferente archivo de excel obviamente que tiene las mismas columnas y repito el proceso de llenado de los demas con la misma especifica sección solo que estos no los limpio sino que los nuevos datos se añaden a los que ya se habian cargado anteriormente.

    Y este proceso se repite unas 30 veces.

    Al final ya despues de haberlo hecho con todos los archivos de excel, debo de unir todos los 39 datagridviews en un solo datagridview para que despues pueda exportarlo a un archivo nuevo de Excel.

    Pues al momento de intentar unir los datagridview me manda este error:

    Excepción no controlada del tipo 'System.ArgumentOutOfRangeException' en mscorlib.dll

    Información adicional: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.

    Y pues bueno aqui le s dejo mi codigo:

    TabControl1.SelectTab(T42)
            Cursor = Cursors.AppStarting
            For p As Integer = 0 To Final.RowCount - 1
                Final.Rows.Remove(Final.CurrentRow)
            Next
    
            For Each c As DataGridViewColumn In SAPView1.Columns
                Final.Columns.Add(c.Clone)
                ProgressBar1.Value = 20
            Next
    
            If SAPView1.RowCount > 0 Then
                SAPView1.Rows(11).Selected = True
                For Each rowcopy As DataGridViewRow In SAPView1.SelectedRows
                    index = Final.Rows.Add(rowcopy.Clone)
                    For Each celda As DataGridViewCell In rowcopy.Cells
                        Final.Rows(index).Cells(celda.ColumnIndex).Value = celda.Value
                    Next
                Next
            Else
    
            End If
    
    
            If StkNacional.RowCount > 0 Then
                For i As Integer = 0 To StkNacional.RowCount - 1
                    StkNacional.Rows(i).Selected = True
                Next
                StkNacional.Sort(StkNacional.Columns(2), System.ComponentModel.ListSortDirection.Descending)
                r = StkNacional.RowCount - 1
                StkNacional.Rows(r).Cells(0).Value = "Stock Nacional"
                For Each rowcopy As DataGridViewRow In StkNacional.SelectedRows
                    index = Final.Rows.Add(rowcopy.Clone)
                    For Each celda As DataGridViewCell In rowcopy.Cells
                        Final.Rows(index).Cells(celda.ColumnIndex).Value = celda.Value
                    Next
                Next
                ProgressBar1.Value = 40
                StkNacional.ClearSelection()
                StkNacional.Rows(r).Cells(0).Value = ""
                r = Nothing
                StkNacional.Sort(StkNacional.Columns(1), System.ComponentModel.ListSortDirection.Ascending)
            Else
            End If

    Obviamente solo puse la parte donde solo copia los datos de un datagridvies, no le veo el caso de poner lo demás ya que es exactamente lo mismo .

    Espero puedan ayudarme, Gracias.

    miércoles, 6 de noviembre de 2013 22:14