Classificação alfa do .Net Gridview, ela precisa ser classificada numericamente
Pergunta
Esta é minha primeira questão real de necessidade para qualquer um dos especialistas em Gridview no mundo .NET.
Estou criando um Gridview a partir do codebehind e estou mantendo vários dados numéricos nas colunas.Embora eu adicione a vírgula nos campos numéricos do codebehind.Quando eu o carrego no Gridview, tenho a capacidade de classificação ativada, MAS o gridview escolhe a classificação ALFA em vez de classificar numericamente porque eu adiciono essas vírgulas.
Então preciso de ajuda.Alguém disposto a dar uma chance a este?Preciso alterar algumas das minhas colunas no gridview para classificação numérica em vez da classificação alfa que está usando.
Solução 4
Em vez disso, apenas recorri ao JQUERY Table Sorter.
pode ser encontrado aqui: classificador de tabelas
Outras dicas
Se você acabar implementando seu próprio comparador e classificando-os como strings, o algoritmo para tratar números 'corretamente' é chamado de Classificação Natural.Jeff escreveu uma entrada muito boa sobre isso aqui:
Classificação para humanos:Ordem de classificação natural
Você pode encontrar uma implementação muito boa em C# aqui:
http://www.codeproject.com/KB/string/NaturalSortComparer.aspx
Dependendo exatamente de como você está classificando, você pode usar um dos métodos acima ou retornar ao banco de dados e fazer a classificação lá se as colunas forem realmente do tipo numérico e adicionar sua decoração a elas mais tarde.
P-Invoke é seu amigo.
[DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);
Então você poderia usá-lo como seu próprio comparador.
Por exemplo (no VS2005),
Array.Sort(tringArray, delegate(string left, string right)
{
return StrCmpLogicalW(left, right);
});
Sei que isso é muito antigo, mas você está misturando dados com apresentação;é isso que está estragando tudo.Obtenha o número do SQL sem adicionar vírgulas e adicione-os na camada de apresentação.