• ベストアンサー

datagridviewの並べ替え

VB2005でDataGridViewを使用して属性番号、日時順、電圧値といったデータ行を表示させています。 複数のcsvファイルから読み込んで表示させていますが、この表示を属性番号順・日時順といった順で並べ替えをしたいのです。 DataGridView.Sortメソッドを使用して 日時列→属性番号列といった順で連続的にソート処理をしています。 が、上手くいきません。 年末の忙しいところ皆さん申し訳ないのですが、知っている方教えて下さい。 最終的には属性順には並んでいますが、最初の日時順が崩れてしまっています。 日時順を元に属性番号順に並べ替える時に、並び順が下がる対象行があるとします。 この並び順が下がる行データの移動先の位置にあった行データが日時を無視して入れ替わりに上がってきてしまっています・・・ よろしくお願いしますm(__)m

質問者が選んだベストアンサー

  • ベストアンサー
  • cross22
  • ベストアンサー率66% (4/6)
回答No.2

noah7150さんが紹介しているページの日本語版です。 下記URLの 「IComparer インターフェイスを使用したカスタムの並べ替え」 をコピペして動かしてみてください。 ' If the Last Names are equal, sort based on the First Name.  とコメントがあるので、 Last Namesが同じだったら、First Nameでソート・・・ という処理をしているんだと思います。 わかりにくい場合、グリッドの中身を数値に置き換えてみると わかりやすいかもしれません。 とりあえず動かしてみるとわかると思います。 http://msdn.microsoft.com/ja-jp/library/ms171608.aspx

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms171608.aspx
harajapan
質問者

お礼

ご回答ありがとうございました。 無事解決しました。 年末年始体調不良で寝込んでまして、なかなか確認作業ができずにお礼が遅れスミマセンでした。。。 因みに上手くいかなかった方法は市販の書籍に掲載されていた dataGridView.sort(column,direction)を使用して column=0を実行後、続けてcolumn=1を実行していました。 この方法は間違ったやり方だったのでしょうか? それともVBのバグですかね?

その他の回答 (2)

  • cross22
  • ベストアンサー率66% (4/6)
回答No.3

こんにちは。 > この方法は間違ったやり方だったのでしょうか? > それともVBのバグですかね? やりたいことが複数のソートキーでの並び替えということだったので、 やり方的に間違ってるような気がします。 カラム名を渡すやり方は、ソートキーは1つしか指定できないっぽいので。 DataGridView.Sortメソッドを使って複数条件でソートする場合はharajapanさんが解決したやり方じゃないとできないみたいです。 バグではないと思います。

harajapan
質問者

お礼

再三のご回答ありがとうございました。 何となくエクセル感覚で行くとシングルソートを連続して2回やればできるのではと思い込んでいました。 以後はご教示頂いた手法で行う様にします。 ありがとうございました。

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.1

参考になれば DataGridViewを複数カラムでソートする手法です。 http://dobon.net/vb/bbs/log3-22/13851.html

参考URL:
http://dobon.net/vb/bbs/log3-22/13851.html
harajapan
質問者

補足

早速のご回答ありがとうございます。 ・・・すみません。 初心者なもので、参考サイトを見ましたが、よく理解できませんでした。 もう少し、かみくだいて教えて頂けませんでしょうか。 よろしくお願いしますm(__)m

関連するQ&A