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

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

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

DataGridViewのソート順


(過去ログ 8 を表示中)

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

■8234 / inTopicNo.1)  DataGridViewのソート順
  
□投稿者/ K 二等兵(1回)-(2006/11/12(Sun) 11:31:05)

分類:[C#] 


分類:[C#] 

SortCompareイベントでソート順を制御できると思ったんですが、
DataSourceをセットした場合、このイベントが発生しないようです。
MSDNにも記述がありました。

XMLファイルをDataSourceにした場合、文字列順でソートされてしまうので、
整数としてソートしたいのですが、いい方法はないでしょうか?

現状、XML読み込み時にXmlReadModeを指定して誤魔化しています。

System.Data.DataSet ds;
ds.ReadXml(fileName, XmlReadMode.InferTypedSchema);
this.dataGridView1.DataSource = ds.Tables[0];



0
引用返信 編集キー/
■8235 / inTopicNo.2)  Re[1]: DataGridViewのソート順
□投稿者/ ぽぴ王子 曹長(84回)-(2006/11/12(Sun) 13:01:17)
ぽぴ王子 さんの Web サイト

分類:[C#] 

No8234に返信(Kさんの記事)

こんにちは。

XMLをデータソースに使用したことはありませんが、DataTableにしてあれば、そ
のDefaultViewを使用するか、またはテーブルからDataViewを作成して、その
Viewにソート項目を設定したものをデータソースにしてみればいいのではないで
しょうか。

0
引用返信 編集キー/
■8252 / inTopicNo.3)  Re[2]: DataGridViewのソート順
□投稿者/ K 二等兵(2回)-(2006/11/13(Mon) 22:25:10)

分類:[C#] 

DefaultViewにSortプロパティがあります。
しかし、昇順と降順、ソート対象の列、
くらいしか指定できなさそうです。

> Viewにソート項目を設定
というのはどうやるのでしょうか?



0
引用返信 編集キー/
■8262 / inTopicNo.4)  Re[3]: DataGridViewのソート順
□投稿者/ ぽぴ王子 曹長(85回)-(2006/11/14(Tue) 10:35:03)
ぽぴ王子 さんの Web サイト

分類:[C#] 

No8252に返信(Kさんの記事)

こんにちは。

失礼しました。少々勘違いしていたようです。
(SortCompareイベントが使えないなら、DataViewのSortを使えばいいじゃない?
と思ってました)

えーと、では改めて。
要するに数字が文字列としてテーブルに登録されているので、それを数値にして
やればいいわけですよね。
そこで、読み込んだ後のテーブルに列を追加して、その列を文字列として認識さ
れている列を数値に変換したものにしてやればいいのかなと。

とりあえず作ってみたのがコチラ。

DataSet ds = new DataSet();
ds.ReadXml("test.xml");
ds.Tables["setting"].Columns.Add("test", typeof(Int32));
ds.Tables["setting"].Columns["test"].Expression = "CONVERT(value, 'System.Int32')";
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Columns["value"].Visible = false;

value列に数字が入っていて、文字列として認識されているので、test列を追加
してtest列のExpressionプロパティを設定することで、test列はvalue列を数値
化した内容が入ります。

ちなみにそのままDataSourceとして設定してしまうとvalue列も表示されてしま
うので小細工をして表示させないようにしています。
(オススメはAutoGenerateColumnsプロパティをFalseにして、自分で列設定をし
てしまうことですが)

こんな感じでどうでしょうか。


0
引用返信 編集キー/
■8275 / inTopicNo.5)  Re[4]: DataGridViewのソート順
□投稿者/ K 二等兵(5回)-(2006/11/14(Tue) 21:35:33)

分類:[C#] 

ありがとうございます。
確かにできましたが・・・いまいちしっくりこないような。
とりあえず、この方法で全列を数字列に置き換えることにします。
元のいらない列は削除・・・できないですね。非表示にします。

> 要するに数字が文字列としてテーブルに登録されているので、それを数値にして
> やればいいわけですよね。
 結局、スキーマ指定なしにDataSet.ReadXmlはあまり使わない方がいいようです。今回は列の名前も数もばらばらのXMLを処理したいので、スキーマ指定できないんですが・・・
こういう場合は、一列ずつ読み込んで追加するしかないようです。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -