私の DataView はおかしな動作をしており、アルファベット順に並べ替えているため、数値的に並べ替える必要があります。私はこれについてウェブ全体を見渡し、ICompare で並べ替える方法について多くのアイデアを見つけましたが、実際には何もしっかりしていません。
だから私の質問は
- ICompare を DataView に実装するにはどうすればよいですか (ここでコードを探しています)。
- 実際の文字列である文字列でいっぱいの列と数字でいっぱいの列 (コンマ付き) から正しく解読する方法。
この 1 人で私を助けるコードが必要です。私は多かれ少なかれ ICompare のアイデアと、さまざまなシナリオで実装する方法について迷っているので、全体的に良い説明があれば素晴らしいでしょう。
また、リンクを渡さないでください。私はこれに関する確かな答えを探しています。
私が使用するいくつかのコード。
DataView dataView = (DataView)Session["kingdomData"];
dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);
gvAllData.DataSource = dataView;
gvAllData.DataBind();
private string ConvertSortDirectionToSql(SortDirection sortDirection)
{
string newSortDirection = String.Empty;
if (Session["SortDirection"] == null)
{
switch (sortDirection)
{
case SortDirection.Ascending:
newSortDirection = "ASC";
break;
case SortDirection.Descending:
newSortDirection = "DESC";
break;
}
}
else
{
newSortDirection = Session["SortDirection"].ToString();
switch (newSortDirection)
{
case "ASC":
newSortDirection = "DESC";
break;
case "DESC":
newSortDirection = "ASC";
break;
}
}
Session["SortDirection"] = newSortDirection;
return newSortDirection;
}
このシナリオでは、データテーブルを動的に構築し、それをデータビューに押し込みます。そこで、データビューをグリッドビューに配置すると同時に、データビューをソート機能用のセッション オブジェクトに配置することも忘れないでください。
ユーザーがグリッドビューを呼び出して列を並べ替えると、セッション オブジェクトでデータビューを呼び出し、データビューの並べ替え式を次のように作成します。
dataview.sort = e.sortexpression + " " + e.Sortdirection;
または、それらの線に沿った何か。したがって、通常出てくるものは、次のようなすべての実際の文字列に適しています
車; 家; スコット; ザックなど…
しかし、コンマ区切りの値を持つ数値フィールドに対して同じことを行うと、次のような結果になります
900; 800; 700; 600; 200; 120; 1,200; 12,340; 1,000,000;
私が何を意味するか分かりますか?ナチュラルソートではなく、アルファソートとしてアイテムをソートするだけです。Dataview を自然に数値列を次のように正しく並べ替えたい
120; 200; 600; 700; 800; 900; 1,200; 12,340; 1,000,000;
私を助けるためにあなたができることを教えてください。
PSこれを行う方法について数え切れないほどの記事を調べましたが、それらのすべてがリスト/配列に押し込んでそのように行うと言っていますが、もっと効率的な方法はありますか?