DataGridViewのソートを解除するには?

解決


fumofumo  2009-04-24 13:23:46  No: 141858  IP: 192.*.*.*

開発環境:WinXP(SP3)  VB2005  Oracle 9i

①検索条件を入力
②検索ボタンを押す
③検索結果を DataGridView に表示
の画面を作成しています。

そこで、DataGridView の任意の列ヘッダをクリックしてソートした後に、
再度①、②の動作をした時に、前に列ヘッダをクリックしてソート
したものが引き継がれて前にクリックした列ヘッダの項目で
ソートされてしまします。
これを再度①、②の動作をした時に前にクリックした列でのソートを
解除したいと考えています。

調べた結果 BindingSource の Sort プロパティをNothingにすれば
解除出来ることは分かったのですが、BindingSourceを使用せずに
解決できる方法があればご教授下さい。

編集 削除
特攻隊長まるるう  2009-05-04 10:22:46  No: 141859  IP: 192.*.*.*

> 調べた結果 BindingSource の Sort プロパティをNothingにすれば
> 解除出来ることは分かったのですが、BindingSourceを使用せずに
> 解決できる方法があればご教授下さい。
先に理由・必要となる要件を全て提示しておいてください。

編集 削除
fumofumo  2009-05-07 08:06:34  No: 141860  IP: 192.*.*.*

特攻隊長まるるう さんご指摘ありがとうございます。

BindingSource だと DataGridView の数だけ BindingSource を
配置するようになると思うのですが、もうすでに DataGridView
を使用して幾つかアプリケーションを作成しており、変更に
それなりに時間がかかりそうなので DataGridView の機能もしくは
BindingSource を使用するより早く変更が可能な方法がないか
探しています。

以上宜しくお願いします。
※不明、不透明な部分がございましたらご指摘のほどお願いします。

編集 削除
Hongliang  2009-05-07 10:14:04  No: 141861  IP: 192.*.*.*

DataGridView に表示するデータはどうやってますか?
DataTable または DataSet を DataSource に設定している?
DataGridView.Rows に直接 Add している?

編集 削除
fumofumo  2009-05-07 11:22:30  No: 141862  IP: 192.*.*.*

DataGridView には SQLの結果をDaraSetに
入れて DataSource に設定しています。

肝心なところが抜けいてました。
すいません。m(_ _)m

編集 削除
Hongliang  2009-05-07 11:38:08  No: 141863  IP: 192.*.*.*

> DataGridView には SQLの結果をDaraSetに
> 入れて DataSource に設定しています。

この場合 DataGridView は、DataMember プロパティで指定された DataTable の、DefaultView で返される DataView を表示用データとして使用します。
この DataView にはソートやフィルタに使用できるプロパティが用意されています。
Sort プロパティに空文字列または null/Nothing が代入された場合、基となる DataTable の行順番通りに並べられます。

編集 削除
fumofumo  2009-05-07 15:14:29  No: 141864  IP: 192.*.*.*

Hongliang さんアドバイスありがとうございます。

DataView の Sort プロパティを使用したら簡単且つ
短時間でできました。

編集 削除