Visual Basic - como ordenar grilla en forma numerica

Life is soft - evento anual de software empresarial
   
Vista:

como ordenar grilla en forma numerica

Publicado por jernet (5 intervenciones) el 14/11/2007 14:15:13
holass a cualquiera que pueda me pueda ayudar....bueno mi problema es el siguiente ...cree una grilla para una aplicacion vb...en el dbclick tengo un codigo para que le ordene ascendente y desendente...

Private Sub gr_clientes1_Click(ByVal Col As Long, ByVal Row As Long)
'Si presiona la primera Fila, Realiza Orden
If Row = 0 Then

'grdPedidos.SortBy = 1 'orden por fila
gr_clientes1.SortBy = 2 'orden por columna

'Indica el Tipo de Orden
If chkOrden1.Value = 1 Then 'Descendente
gr_clientes1.SortKeyOrder(1) = 2
chkOrden1.Value = 0

Else
gr_clientes1.SortKeyOrder(1) = 1
chkOrden1.Value = 1
End If

gr_clientes1.SortKey(1) = Col

gr_clientes1.Col = 0
gr_clientes1.Col2 = gr_clientes1.MaxCols
gr_clientes1.Row = 0
gr_clientes1.Row2 = gr_clientes1.MaxRows
gr_clientes1.Action = 25 'Accion = Ordenar

Else
'Deja Activa la Fila Seleccionada
gr_clientes1.Row = Row
'gr_clientes1.ActiveRow = Row


gr_clientes1.Col = 2
Lblcli_total = gr_clientes1.Text

gr_clientes1.Col = 15
Lblcli_510 = gr_clientes1.Text

End If

gr_clientes1.SetFocus
End Sub..

pero este procediendo solo me ordena de forma alfabeticamente...y no numerica...si alguien sabe como solucionar este problema se lo agradecere...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como ordenar grilla en forma numerica

Publicado por Carlos (125 intervenciones) el 14/11/2007 18:28:58
Tenia el mismo problema pero con listview, creo qe la misma solucion se puede dar para tu caso, la cuestion es que a los numeros le tienes que colocar un X cantidad de 0 delantes ordenarlo y luego quitarle los ceros

dim RgsT as Long
RgsT = LstX.ListItems.count
For Ds = 1 To RgsT
LstX.ListItems.Item(Ds).SubItems(2) = String$(20 - Len(LstX.ListItems.Item(Ds).SubItems(2)), "0") & LstX.ListItems.Item(Ds).SubItems(2)
Next
If LstX.SortOrder = lvwAscending Then
LstX.SortKey = 2
LstX.SortOrder = lvwDescending
Else
LstX.SortKey = 2
LstX.SortOrder = lvwAscending
End If
For Ds = 1 To RgsT
LstX.ListItems.Item(Ds).SubItems(2) = FormatNumber(LstX.ListItems.Item(Ds).SubItems(2), 2)
Next

te lo coloco como lo hice en el listview, tu puedes acomodarlo para la grilla

^^
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar