|
■No9186 (hikaru さん) に返信
> <事象>
> NO 1、10、11、2、3、4、…
> 私としては、
> NO 1、2、3、4、…10、11
> としたいのですが、どのようにしたらいいのでしょうか?
> 文字としてソートしているようなんですが、数値としてソートしたいです。
"NO" が文字項目として定義されているからそうなってしまうんでしょうね。
根本から言えば、そうなってしまうのを数値項目にすればいいような気がします。
どうやってテーブルに入れているのかはわかりませんが、例えばSQLで工夫するとか
そもそものDBの項目が文字項目だったら数値項目に変更するとか。
そういったことを一番に考えるべきではありますが、この条件で数値としてソート
するのであれば、列を追加して数値に変換させるのが一番楽そうです。
こんな感じで。
lay_Table.Columns.Add("NOソート用", typeof(int), "Convert(NO, 'System.Int32')");
dv = new DataView(lay_Table);
dv.Sort = "NOソート用";
foreach (DataRowView drv in dv)
{
dt.ImportRow(drv.Row);
}
ちなみにImportRowですが、C# 2.0であればDataView.ToTable()メソッドがあるので
それを使うと楽です。
|