- PR -

DATAGRIDの書式設定

1
投稿者投稿内容
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2003-02-19 16:28
初めて投稿させていただきます。.NETを修行中のものです。
下記のようなASP.NETのプログラムを作っています。
(略)
oleDbCommand.commandText="select date,kingaku from nyukin";
(略)
oleDbDataAdapter.fill(dataSet,"nyukin");
(略)
dataGrid.dataSource=dataSet.tables["nyukin"];
dataGrid.dataBind();
この時、DATAGRIDの金額の列の書式設定で数字を金額表示、日付をyyyy/MM/dd形式でしたいのですが、
プロパティビルダの列の書式設定でyyyy/MM/ddやCを指定しても、うまくいかないようです。
ご存知の方がいらっしゃいましたらご教授お願いいたします。

せんべい
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 61
お住まい・勤務地: 神奈川県川崎市
投稿日時: 2003-02-19 18:50
せんべいです

 私も修行者です。
私は、フォーマットビルダを使わずに手で書く派です。
さて、私は日付の書式を指定するときはContainer.DataItem(<<データフィールド>>)を
つかわずに、DataBinder.Eval(Container.DataItem,<<データフィールド>>)を
使っています。
<%# DataBinder.Eval(Container.DataItem, <<データフィールド>>, "{0:d}") %>
のようにすればいいのではないでしょうか。金額も、第三引数を変えればよいのでは
ないでしょうか。

又は、コードビハインドに関数を作って、そこで書式を指定したStringを戻してやれば
良いのではないでしょうか。たとえば、DateFormat()っていう関数を作って
<%# DateFormat(Container.DataItem(<<データフィールド>>)) %>

<%# DateFormat(DataBinder.Eval(Container.DataItem, <<データフィールド>>)) %>
で良いのでは?

Public Function DateFormat(ByVal obj As DateTime) As String
  Return obj.ToString("yyyy/MM/dd")
End Function

かな?


[ メッセージ編集済み 編集者: せんべい 編集日時 2003-02-19 18:55 ]
ほりかず
常連さん
会議室デビュー日: 2003/01/29
投稿数: 26
投稿日時: 2003-02-20 09:34
プロパティビルダの列データフォーマット式に
.NET Framework の書式指定式{0:yyyy/MM/dd}等を指定してあげれば、大丈夫ですよ。

_________________
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2003-02-20 17:39
ご返答ありがとうございました。
金額のほうは{0:c}でうまくいきました。
日付のほうはなぜか{0:####/##/##}でうまくいきました。
元データがintだったためでしょうか。
ちなみに元データをstring型にして{0:yyyy/MM/dd}でやってもうまくいきませんでした。
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2003-02-22 06:59
>ちなみに元データをstring型にして{0:yyyy/MM/dd}でやっても
>うまくいきませんでした。

元データが文字列の場合は書式は無視されるようです。
ちゃんと元データが日付型であれば問題なく表示されるはずです。
SQLServerを使ったDataGridでは上記書式で問題なく表示できて
います。
1

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