.Net Gridview のアルファ ソート、数値的にソートする必要がある
質問
これは、.NET の世界にいる Gridview の専門家が必要かどうかという、私の最初の本当の質問です。
コードビハインドからグリッドビューを作成しており、列に大量の数値データを保持しています。ただし、コードビハインドの数値フィールドにはカンマを追加します。グリッドビューにロードすると、ソート機能がオンになりますが、カンマを追加するため、グリッドビューは数値によるソートではなくアルファソートを選択します。
だから助けが必要なんです。これを試してみたい人はいますか?グリッドビューの一部の列を、使用しているアルファソートではなく数値ソートに変更する必要があります。
解決 4
代わりに、JQUERY Table Sorter を使用しました。
ここで見つけることができます: テーブルソーター
他のヒント
最終的に独自の比較演算子を実装して文字列として並べ替えることになった場合、数値を「適切に」処理するためのアルゴリズムはナチュラル ソートと呼ばれます。Jeff はこれについて非常に優れたエントリをここに書きました。
人間のための仕分け :自然な並べ替え順序
C# での非常に優れた実装は次の場所にあります。
http://www.codeproject.com/KB/string/NaturalSortComparer.aspx
ソートの正確な方法に応じて、上記の方法のいずれかを使用することも、列が実際に数値型である場合は DB に戻ってソートを実行し、後で装飾を追加することもできます。
P-Invoke はあなたの友達です。
[DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);
その後、それを独自の比較子として使用できます。
たとえば (VS2005 の場合)、
Array.Sort(tringArray, delegate(string left, string right)
{
return StrCmpLogicalW(left, right);
});
これは本当に古いことだとは思いますが、データとプレゼンテーションを混ぜ合わせています。それがこの種を台無しにしているものです。カンマを追加せずに SQL から数値を取得し、プレゼンテーション層に追加します。