none
Ordenación del datagridview RRS feed

  • Pregunta

  • Buenas Tardes!

    Tengo un dataGridView (dgvDilig) que relleno con nombres de archivos mediante una tabla virtual

    Como deseo que el usuario los vea por orden (tipo de documento y  fecha de creación) he creado un un procedimiento para ordenarlo

    El problema que es siempre las dos primeras filas no se ordenan, se quedan al inicio de la tabla. Sin embargo en cuanto hago click en otra fila se ordenan automáticamente. He probado a currentCell, al Clear, a cambiar de columna y siempre sale igual. No se como resolverlo. Este es mi código:


        Private Sub ReordenaFilas()
            Try
                dgvDilig.Sort(dataGridViewColumn:=dgvDilig.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
                '
                Dim iSec As Integer = 1
                'diligencias
                For Each fila As DataGridViewRow In dgvDilig.Rows
                    If Mid(fila.Cells("DOCUMENTO").Value.ToString, 1, 3) = "DLG" Then
                        fila.Cells("ORDEN").Value = iSec
                        iSec += 1
                    End If
                Next
                'Actas
                For Each fila As DataGridViewRow In dgvDilig.Rows
                    If Mid(fila.Cells("DOCUMENTO").Value.ToString, 1, 4) = "Acta" Then
                        fila.Cells("ORDEN").Value = iSec
                        iSec += 1
                    End If
                Next
                'Otros documentos
                For Each fila As DataGridViewRow In dgvDilig.Rows
                    If Mid(fila.Cells("DOCUMENTO").Value.ToString, 1, 3) <> "DLG" And
                        Mid(fila.Cells("DOCUMENTO").Value.ToString, 1, 4) <> "Acta" Then
                        fila.Cells("ORDEN").Value = iSec
                        iSec += 1
                    End If
                Next
                'Numeros en columna oculta
                Dim sX As String = ""
                For Each fila As DataGridViewRow In dgvDilig.Rows
                    If IsNumeric(fila.Cells("ORDEN").Value) Then
                        Dim xn As Integer = CInt(fila.Cells("ORDEN").Value.ToString)
                        If xn < 10 Then
                            sX = "000" & xn
                        ElseIf xn < 100 Then
                            sX = "00" & xn
                        ElseIf xn < 1000 Then
                            sX = "0" & xn
                        Else
                            sX = xn
                        End If
                    End If
                    fila.Cells("XX").Value = sX
                Next
                '
                '
                If dgvDilig.RowCount > 2 Then
                    dgvDilig.CurrentCell = dgvDilig.Rows(dgvDilig.RowCount - 1).Cells(0)
                End If

                dgvDilig.Sort(dataGridViewColumn:=dgvDilig.Columns(3), System.ComponentModel.ListSortDirection.Ascending)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub

    La columna tres es una columna oculta

    Gracias!

    jueves, 18 de junio de 2020 13:01

Todas las respuestas

  • Hola:
    > Tengo un dataGridView (dgvDilig) que relleno con nombres de archivos mediante una tabla virtual <
    Si cargas los datos desde una tabla, ¿porque no pones en la consulta, en la clausula ORDER BY los campos por los que quieres que se ordene?

    Un saludo desde Bilbo
    Carlos
    jueves, 18 de junio de 2020 16:52
  • Hola!, porque son documentos que van a formar parte de un compendio y es el usuario el que elije el orden en que deben recopilarse.
    jueves, 18 de junio de 2020 18:34
  • Hola:
    En el primer post
    > Como deseo que el usuario los vea por orden (tipo de documento y  fecha de creación) <
    En el segundo
    > es el usuario el que elije el orden en que deben recopilarse. <

    La solucion es, haces la consulta SELECT ....... ORDER BY tipodocumento, fechacreacion
    La cargas en un DataGridView y el usuario si hace click en una columna, este se ordena por esa columna de forma ascendente, si vuelve a hacer click en la misma columna lo hace de forma descendente.
    Con lo cual tendras las 2 opciones

    Un saludo desde Bilbo
    Carlos
    viernes, 19 de junio de 2020 6:44
  • Hola, 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

    Espero su respuesta.  

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN.  

    Eric Ruiz

    ____________________________  

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    sábado, 27 de junio de 2020 0:43
    Moderador
  • Todavía no se me ha solucionado el problema, porque la respuesta de J. Carloos Herrero se refiere a una consulta, pero yo indique que se trata de los archivos de un directorio, donde los documentos se crean dinamicamente por el usuario y es éste mismo el que elije el orden para insertarlosen otro archivo.

    He conseguido ordenarlos a criterio del usuario pero siempre se quedan dos filas (documentos que se muestran) al principio del datagridview que no se recolocan hasta que se clickea en otra parte del datagridview y eso es precisamente lo que quería solucionar

    Gracias.

    lunes, 29 de junio de 2020 13:52
  • Hola:
    En el ultimo post
    > Todavía no se me ha solucionado el problema, porque la respuesta de J. Carloos Herrero se refiere a una consulta, pero yo indique que se trata de los archivos de un directorio <
    En el primer post
    > Tengo un dataGridView (dgvDilig) que relleno con nombres de archivos mediante una tabla virtual <

    Un saludo desde Bilbo
    Carlos
    lunes, 29 de junio de 2020 14:09