- - PR -
DataGrid内での並び替えについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-13 12:10
やま と申します。
いつもお世話になっております。 Webアプリで作成されたログファイルの中身を表示するDataGridを作っています。 ログファイルには、日時、メッセージ等々、1つのログが1行に書かれています。 DataGridに表示する時の条件として、日時の新しいもの(つまり一番下の行)から表示する。 という条件があります。 そこで、 dt.DefaultView.Sort = "日時 DESC"; として並び替えを行ったのですが、 2004/10/13 9:59 と 2004/10/13 10:01とでは 理想としては後者が出て欲しいのに、前者が先に表示されます。 これは、並び替えを行うときに9時と10時を (9)と(10)で比較するのではなく、(9)と(1)(0)で比較されて(9)と(1)とでは (9)の方が大きいと判断されたからだと思われます。 また、別の方法として表示しない列として、通し番号を持つ列を追加して それによって並び替えも試みたのですが日時のときと同様に、 999番目と6000番目では1桁目だけを比べて999番目のほうが大きいと判断されてしまいました。 そこで、どなたか他の方法等を知っている方がいらしたら、 ご教授願いたく、書き込みをしました。 よろしくお願いいたします。 _________________ |
|
投稿日時: 2004-10-13 12:22
直感でごめんなさい・・・・
「文字列だから」って思ったのですが・・・・ |
|
投稿日時: 2004-10-13 13:46
申し訳ありません。
長々と説明しながら説明が足りなかったです。 ご指摘のとおり、文字列だから判定ができていないのです。 そこで、DataTableへ代入する値をDateTime型へ変換してから DataTableへ追加したのですが、並び替えを行うときには 文字列として並び替えられてしまうためできません。 そこで、具体的にはDateTime型から文字列型へ変換するときに 時間表記を「2004/10/13 09:59」のように0パディングする方法や その他の方法を知っている方がいらっしゃいましたら お願いします。 |
|
投稿日時: 2004-10-13 14:03
DataTableの列であるDataColumnは型をもっているので
それをStringからDataTimeにすればイイのでしょうか? dtはDBから取得したのか、自作したのかはわからないですが。 ToStringで書式していすれば文字ベースでも比較は可能です。 |
|
投稿日時: 2004-10-13 15:13
書式設定ですね。
WindowsFormの例です。Webは少し違うかもしれません。 DataGrid に DataGridTableStyle を追加して DataGridColumnStyle を追加しましょう。 DataGridColumnStyle は具体的には DataGridTextBoxColumn をカラム数分追加します。 DataGridTextBoxColumn.Format プロパティで書式設定できます。 yyyy/MM/dd hh:mm:ss と設定すればよかったと思います。 _________________ 〜〜〜〜〜〜〜〜 えムナウ http://www.geocities.jp/mnow mnow@yahoo.co.jp 〜〜〜〜〜〜〜〜 [ メッセージ編集済み 編集者: えムナウ 編集日時 2004-10-13 15:14 ] |
|
投稿日時: 2004-10-13 15:35
やま です
DBへ登録する際の日付文字列の設定として これまでは、DateTime型変数.ToString("g");としていたのですが、 DateTime型変数.ToString("yyyy\/MM\/dd HH\:mm"); とすることによって、2004/10/13 09:59のようにすることで対処できました。 お返事をくださったみなさん、ありがとうございました。 |
1