- PR -

DataGridViewでソート

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/10/20
投稿数: 5
投稿日時: 2006-10-20 16:42
Visual C# 2005で開発してます。

DataGridViewでヘッダーをクリックすると、
昇順→降順→…という順番でソートしますが、
文字列ではなく、数値としてソートってかけられるのでしょうか?

@列のカラムタイプをテキストボックスに設定します。
Aセルに数字が入力されているとします。(1〜10まで)
Bヘッダーをクリックします。
→1,10,2,3,〜 となってしまいます。(文字列扱い)
ここで1,2,3〜とソートされるようにしたいのです。

よろしくお願いします。

かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-10-20 17:23
指定したデータソースを数字にしてあげれば数字としてソートされますよ。
コード:
            DataTable table = new DataTable("table1");
            table.Columns.Add(new DataColumn("col1", GetType(Int32)));
            table.Columns.Add(new DataColumn("col2", GetType(String)));
            
            table.Rows.Add(2, "2");
            table.Rows.Add(1111, "1111");
            table.Rows.Add(3, "3");
            table.Rows.Add(1, "1");
            table.Rows.Add(4, "4"); 

            DataGridView2.DataSource = table;

未記入
会議室デビュー日: 2006/10/20
投稿数: 5
投稿日時: 2006-10-26 15:38
かるあさん
返答ありがとうございます。
問題のグリッドではデータソースを使用していません。
システムの仕様で、SqlDataReaderでDBからデータを取得し、
一旦メモリ上に格納し、グリッドへaddしています。

このような場合は無理なのでしょうか?
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-10-26 17:36

SortCompare イベントを使えば良いかと。

// どうせメモリに格納するんだから(DataTable じゃないにしても配列かコレクションに入ってるんでしょうし)DataSource にしちゃえばいいのになぁ……。
未記入
会議室デビュー日: 2006/10/20
投稿数: 5
投稿日時: 2006-10-27 13:44
かるあさん・Hongliangさん

SortCompare イベントでばっちりできました〜!
こんなイベントがあったのですね。
こちらの調査不足です。

本当にありがとうございました。
1

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