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

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

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

Re[4]: C# dataGridView Sortについて 


(過去ログ 13 を表示中)

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

■4272 / inTopicNo.1)  C# dataGridView Sortについて 
  
□投稿者/ godera (1回)-(2007/06/12(Tue) 13:43:41)

分類:[C# (ASP.NET)] 

.NETのc#での質問です。

現在、dataGridView1_SortCompareでdataGridViewのソートを行っています。

この場合に、データ値(celldata1)、データ値(celldata2)がint型よりも大きい数値の場合は、どうしたら良いのかわかりません。

e.SortResult をint以上のlongにするにはどうしたらいいか教えてほしいです。
よろしくお願いします。

**************************************************
//結果を代入
e.SortResult = e.CellValue1 - e.CellValue2;
引用返信 編集キー/
■4273 / inTopicNo.2)  Re[1]: C# dataGridView Sortについて 
□投稿者/ επιστημη (541回)-(2007/06/12(Tue) 13:46:49)
επιστημη さんの Web サイト
> e.SortResult をint以上のlongにするにはどうしたらいいか教えてほしいです。
> よろしくお願いします。
> ...
> e.SortResult = e.CellValue1 - e.CellValue2;

MSDN読みました?
大小関係に応じて -1, 0, 1 でも入れときゃいーんじゃないすか?

引用返信 編集キー/
■4274 / inTopicNo.3)  Re[1]: C# dataGridView Sortについて 
□投稿者/ HiJun (37回)-(2007/06/12(Tue) 13:47:23)
2007/06/12(Tue) 13:48:02 編集(投稿者)

すみません。
記載ミスです。
引用返信 編集キー/
■4276 / inTopicNo.4)  Re[2]: C# dataGridView Sortについて 
□投稿者/ ぽぴ王子 (215回)-(2007/06/12(Tue) 13:58:54)
ぽぴ王子 さんの Web サイト
No4272 (godera さん) に返信

>  e.SortResult をint以上のlongにするにはどうしたらいいか教えてほしいです。
> よろしくお願いします。
> 
> **************************************************
>  //結果を代入
>                 e.SortResult = e.CellValue1 - e.CellValue2;

DataGridViewSortCompareEventArgs.SortResult プロパティ
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridviewsortcompareeventargs.sortresult%28VS.80%29.aspx
によれば。

> 最初のセルを 2 番目のセルよりも前に配置する場合は 0 未満。最初のセルと 2 番目
> のセルの値が同じである場合は 0。2 番目のセルを最初のセルよりも前に配置する場合
> は 0 を超える値。

とありますので、型自体は int でかまわないと思います。
引き算した結果を e.SortResult に入れているので、e.CellValue1 と e.CellValue2 が 
long であるがために困っているのだと推測します。
ただ、解説にもあるように e.SortResult は必ずしも引き算した結果を入れなければいけ
ないわけではありません。0 未満の値、0、0 を超える値のいずれかが入っていればいい
わけです。

ということで、テキトーにこんな感じのコードでどうでしょうか(未検証)。

if (e.CellValue1 == e.CellValue2)
{
    e.SortResult = 0;
}
else if (e.CellValue1 > e.CellValue2)
{
    e.SortResult = 1;
}
else
{
    e.SortResult = -1;
}

MSDN ライブラリを見るとこういった話はちゃんと載っていますので、質問する前に一度
目を通しておくといいと思います。

# って丁寧に書いてきたらえぴさんの一言に集約されてた orz

引用返信 編集キー/
■4279 / inTopicNo.5)  Re[3]: C# dataGridView Sortについて 
□投稿者/ godera (2回)-(2007/06/12(Tue) 14:11:36)
返信ありがとうございます。

>■No4276 (ぽぴ王子 さん) に返信
>
> ・・・・・・・・・・
>
>引き算した結果を e.SortResult に入れているので、e.CellValue1 と e.CellValue2 が
>long であるがために困っているのだと推測します。
>ただ、解説にもあるように e.SortResult は必ずしも引き算した結果を入れなければいけ
>ないわけではありません。0 未満の値、0、0 を超える値のいずれかが入っていればいい
>わけです。
>
>ということで、テキトーにこんな感じのコードでどうでしょうか(未検証)。
>
>if (e.CellValue1 == e.CellValue2)
>{
> e.SortResult = 0;
>}
>else if (e.CellValue1 > e.CellValue2)
>{
>
> e.SortResult = 1;
>}
>else
>{
> e.SortResult = -1;
>}
>
> MSDN ライブラリを見るとこういった話はちゃんと載っていますので、質問する前に一度
> 目を通しておくといいと思います。
>

e.SortResultは( 1、0、-1)で判断していることを初めて知りました。これからは自分でも勉強して書き込みたいと思います。本当にありがとうございます。


解決済み
引用返信 編集キー/
■4281 / inTopicNo.6)  Re[4]: C# dataGridView Sortについて 
□投稿者/ επιστημη (542回)-(2007/06/12(Tue) 14:46:33)
επιστημη さんの Web サイト
> e.SortResultは( 1、0、-1)で判断していることを初めて知りました。

ちゃうって ^^;

SortResultの値が 正/0/負 のどれであるかで
並び順を決定しています。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -