- PR -

DataGridの並べ替えについて(C# Winフォーム)

投稿者投稿内容
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2006-01-30 15:28
いつもお世話になっております。

DataGridの並べ替えについて質問です。
DataGridではデフォルトで並べ替えの機能が備わっていますが、並べ替えた後、一番最初に表示した並び順にすることは出来ますか?
ご教授願います。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2006-01-30 16:02
お世話になります。

DataGrid の DataSource に何をセットしているのか
によりますが、
DataTable の場合は、

DataTable dt = (DataTable)this.dataGrid1.DataSource;
dt.DefaultView.Sort = "";

のようですね。
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2006-01-30 16:33
引用:

DataGrid の DataSource に何をセットしているのか
によりますが、
DataTable の場合は、

DataTable dt = (DataTable)this.dataGrid1.DataSource;
dt.DefaultView.Sort = "";

のようですね。


上記、方法で解決出来ました。
ありがとうございました。
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2006-02-01 10:57
お世話になっております。

機能追加がありまして、質問させて貰います。
グリッドのフィールド名の部分をクリックすると昇順、降順の並べ替えが出来ます。
それを昇順→降順→初期表示順→昇順→降順…のように出来るでしょうか?
どなたか教えて頂けませんでしょうか?
び〜る
会議室デビュー日: 2005/11/29
投稿数: 12
投稿日時: 2006-02-01 13:18
クリック回数によって
dt.DefaultView.Sort = [列名];
dt.DefaultView.Sort = [列名] + " " + "DESC";
dt.DefaultView.Sort = "";
の場合分けでいけそうですが、どうでしょう?
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2006-02-01 14:05
お世話になっております。

フィールド名の部分でMouseUpされた時にdt.DefaultView.Sort = "";としてみてもうまくいきません。既定の昇順、降順だけでソートされてしまいます。
どのタイミング(イベント)でこの処理を入れればいいでしょうか?
ご教授ください。
び〜る
会議室デビュー日: 2005/11/29
投稿数: 12
投稿日時: 2006-02-01 14:51
MouseDownイベントのほうがいいと思います。
規定のソートを無効にするにはAllowSortingを無効にするといいです。
キラ
大ベテラン
会議室デビュー日: 2005/12/10
投稿数: 104
投稿日時: 2006-02-01 15:43
引用:

び〜るさんの書き込み (2006-02-01 14:51) より:
MouseDownイベントのほうがいいと思います。
規定のソートを無効にするにはAllowSortingを無効にするといいです。


上記記述でうまく出来ました。
が http://codezine.jp/a/article.aspx?aid=3 のようにコンボボックスを使っています。
コンボボックスの部分で新しく選択した項目に対してはソートが出来ていません。
dtが新しく選択した項目に対して有効になっていないようです。
どのようにすれば新しく選択した項目にもソートが掛かるでしょうか

スキルアップ/キャリアアップ(JOB@IT)