| ■No9187 (ぽぴ王子 さん) に返信 > ■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()メソッドがあるので > それを使うと楽です。
ぽぴ王子さん、ありがとうございます。
おっしゃる通り、DBの項目を数値項目にしようとも思いましたが、 いくつかの問題点がありました。
無事、教えていただいた通り、列を追加してソートすることができました。 ありがとうございます。 これからもよろしくお願いします。
|