C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: DataGridViewのソートについて


(過去ログ 69 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■40515 / inTopicNo.1)  DataGridViewのソートについて
  
□投稿者/ みちる (8回)-(2009/08/27(Thu) 09:34:11)

分類:[C#] 

いつもお世話になっております。

DataGridView.DataSource = DataSet
と、データセットをデータグリッドにバインドして表示しております。
で、下記のように表示されています。

A B
----------------
1 2
2 10
3 1

カラムBでソートをすると、文字列であるため下記のようになってしまいます。

A B
----------------
3 1
2 10
1 2

カラムBでソートをした場合、下記の一覧(数値としてソート)にしたい場合どうすればよろしいですか?

A B
----------------
3 1
1 2
2 10

ご指導お願いします。


引用返信 編集キー/
■40519 / inTopicNo.2)  Re[1]: DataGridViewのソートについて
□投稿者/ やじゅ (1272回)-(2009/08/27(Thu) 11:27:38)
やじゅ さんの Web サイト
No40515 (みちる さん) に返信

「DataGridView ソート 数値」のキーワードで検索しました。

DataGridViewでソート
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34371&forum=7

SortCompareイベントを使用する方法
http://dobon.net/vb/dotnet/datagridview/customsort.html
引用返信 編集キー/
■40524 / inTopicNo.3)  Re[2]: DataGridViewのソートについて
□投稿者/ Hongliang (459回)-(2009/08/27(Thu) 12:57:32)
> SortCompareイベントを使用する方法
> http://dobon.net/vb/dotnet/datagridview/customsort.html
に書かれているとおり、DataSource を設定してる場合は SortCompare が発生しません。

一番いいのは列の型を整数型にすることなんですが。

DataTable をソースとした場合、ソートは DataTable.DefaultView で取得できる DataView の Sort プロパティによって行われます。
これによるソートは列の型によって並び順が決まり、大文字小文字を同一視するかどうかぐらいしかこちらから手を出せません。

一番分かりやすいのは、ソート用の数値型の列を DataTable に追加することです。
列の各行の値は、DataColumn.Exprssion を使って計算列として CONVERT で表現するのが楽でしょう。
この列は DataGridView の列としては表示しないようにしておきます(AutoGenerateColumns の場合なら Form の Load イベントなどで DataGridView.Columns からこの列を取得して Visible = False にする)。
あとは DataGridView.Sorted イベントで、DataGridView.SortedColumn が目的の列だったときに、DataView.Sort でソート用列でソートさせます。
引用返信 編集キー/
■40527 / inTopicNo.4)  Re[3]: DataGridViewのソートについて
□投稿者/ kiwa (5回)-(2009/08/27(Thu) 13:33:28)
DataSetで参照しているテーブルをソートしておけばいいと思います。
SQLでかかれているのであれば

SELECT カラムA, カラムB
FROM  テーブル名
ORDER BY カラムB
引用返信 編集キー/
■40528 / inTopicNo.5)  Re[4]: DataGridViewのソートについて
□投稿者/ やじゅ (1274回)-(2009/08/27(Thu) 13:44:42)
やじゅ さんの Web サイト
No40527 (kiwa さん) に返信
> DataSetで参照しているテーブルをソートしておけばいいと思います。
> SQLでかかれているのであれば
>
> SELECT カラムA, カラムB
> FROM  テーブル名
> ORDER BY カラムB

カラムBが文字列型であれば、同じ結果ですね。カラムBを数値型に変換した上でソートしないと。

引用返信 編集キー/
■40532 / inTopicNo.6)  Re[5]: DataGridViewのソートについて
□投稿者/ みちる (10回)-(2009/08/27(Thu) 15:46:21)
皆様ありがとうございます。

DataSetのDateTypeをstringからint32にしたら、
int型でDataGridViewに挿入されソートできるようになりました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -