Pregunta

Esta es mi primera pregunta real sobre la necesidad para cualquiera de los expertos de Gridview en el mundo .NET.

Estoy creando un Gridview a partir del código subyacente y tengo un montón de datos numéricos en las columnas.Aunque agrego la coma en los campos numéricos del código subyacente.Cuando lo cargo en Gridview, tengo activada la capacidad de clasificación, PERO la vista de cuadrícula elige ordenar ALFA en lugar de ordenar numéricamente porque agrego esas comas.

Entonces necesito ayuda.¿Alguien dispuesto a darle una oportunidad a este?Necesito cambiar algunas de mis columnas en la vista de cuadrícula a ordenación numérica en lugar de ordenación alfabética que está usando.

¿Fue útil?

Solución 4

En cambio, simplemente recurrí al JQUERY Table Sorter.

se puede encontrar aquí: clasificador de mesa

Otros consejos

Si termina implementando su propio comparador y clasificándolos como cadenas, el algoritmo para tratar los números "correctamente" se llama Clasificación Natural.Jeff escribió una entrada bastante buena aquí:
Clasificación para humanos:Orden de clasificación natural

Puede encontrar una implementación bastante buena en C# aquí:
http://www.codeproject.com/KB/string/NaturalSortComparer.aspx

Dependiendo exactamente de cómo esté ordenando, puede usar uno de los métodos anteriores, o puede regresar a la base de datos y realizar la clasificación allí si las columnas son en realidad de tipo numérico y luego agregarle su decoración más adelante.

P-Invoke es tu amigo.

[DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);

Entonces podrías usarlo como tu propio comparador.

Por ejemplo (en VS2005),

Array.Sort(tringArray, delegate(string left, string right)
{
    return StrCmpLogicalW(left, right);
});

Me doy cuenta de que esto es muy antiguo, pero estás mezclando datos con presentación;Eso es lo que está arruinando a este tipo.Obtenga el número de SQL sin agregar comas y luego agréguelos en la capa de presentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top