- PR -

DataGrid の表示形式の設定について

投稿者投稿内容
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-10 16:31
囚人さん、ご迷惑をおかけしております。
引用:

囚人さんの書き込み (2006-03-10 16:08) より:
こういう事をすると、その日付が入る箇所が必ず数字のみの文字列が入らないといけません。
「日付は文字列型」と「数値で扱いたい」が喧嘩しているからです。



そうですね(^^;)
説明しても「今回のシステムだけ例外な作りはダメ」となるものでして・・・
開発側のジレンマです。

引用:

もう一つ
コード:

Text='<%# databinder.eval( container.dataitem, "startymd" ) != String.Empty ? DateTime.Parse( databinder.eval( container.dataitem, "startymd" ) ).ToString( "yyyy/MM/dd" ) : String.Empty %>


こうかな。

startymd はどう入っているのでしょう。"20060101"とか?"180101"とか?キチッと日付が分からんような気がしますね。


startymd は入力チェックをしているため、必ず西暦8桁の有効な日付が入っています。
ただし、空白を許していますので空白+西暦8桁の数字となります。

教えていただいた両方とも試してみましたが、コンパイルエラーとなってしまいます。
−−−−−−−−−−−− 以下、エラー内容 −−−−−−−−−−−−
説明 : この要求の処理に必要なリソースのコンパイル中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソース コードに変更を加えてください。

コンパイラ エラー メッセージ: BC30516: この引数の数を受け付ける 'ToString' がないため、オーバーロードの解決に失敗しました。

ソース エラー:

行 109: <HeaderStyle Width="10%"></HeaderStyle>
行 110: <ItemTemplate>
行 111: <asp:Label id="lblDbStartYmd" runat="server" Text='<%# databinder.eval(container.dataitem,"startymd") != String.Empty ? DateTime.Parse(databinder.eval(container.dataitem,"startymd")).ToString("yyyy/MM/dd") : String.Empty %>'>
行 112: </asp:Label>
行 113: </ItemTemplate>

//localhost/page/Test.aspx(111) : error BC30516: この引数の数を受け付ける 'ToString' がないため、オーバーロードの解決に失敗しました。

target.Text = System.Convert.ToString(databinder.eval(container.dataitem,"startymd") != String.Empty ? DateTime.Parse(databinder.eval(container.dataitem,"startymd")).ToString("yyyy/MM/dd") : String.Empty)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//localhost/page/Test.aspx(111) : error BC32017: カンマ、')'、または有効な式の継続文字が必要です。

以下、大量のエラーが続きます。
−−−−−−−−−−−− 以上、エラー内容 −−−−−−−−−−−−

教えていただいた内容が理解できていないのでデバッグ出来ていないのですが、stratymd が空以外の場合、出力するようにしていますよね。途中の「?」は何でしょうか?
見る限りでは、stratymd をDateTime型に変換して、それを「yyyy/MM/dd」にフォーマットしていると思われるので、一見良さそうに思えるのですが・・・


[ メッセージ編集済み 編集者: ひろれい 編集日時 2006-03-10 16:34 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-10 16:48
引用:

ひろれいさんの書き込み (2006-03-10 16:31) より:

途中の「?」は何でしょうか?


三項演算子ですね。

引用:

.ToString( "yyyy/MM/dd" )


.ToString("yyyy/MM/dd") つまり ToString([string]) を受け付けるオーバーロードがないと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-10 17:11
引用:

じゃんぬねっとさんの書き込み (2006-03-10 16:48) より:

三項演算子ですね。



初めて知りました(^^;)
IF文と同じように「expr ? true_expr : false_expr」という感じで使うんですね。ありがとうございます。

引用:

.ToString("yyyy/MM/dd") つまり ToString([string]) を受け付けるオーバーロードがないと思います。


ありがとうございます。ちょっと複雑なので(複雑でも何でもない?!)、色々と調べながら考えてみます。インラインは、インテリセンスが使えないので辛いです・・・

[ メッセージ編集済み 編集者: ひろれい 編集日時 2006-03-10 17:14 ]
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-10 17:28
引用:

.ToString("yyyy/MM/dd") つまり ToString([string]) を受け付けるオーバーロードがないと思います。


あれ?おかしいな。DateTime.ToString( string value )になっている筈なんですが。
カッコがずれているのかな。
_________________
囚人のジレンマな日々
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-10 17:40
引用:

囚人さんの書き込み (2006-03-10 17:28) より:

あれ?おかしいな。DateTime.ToString( string value )になっている筈なんですが。
カッコがずれているのかな。


または、引用符が閉じ忘れて式の終わりがないと言っているとか。
たとえば、最後の「'」引用符とか。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-03-10 18:04
囚人さん、じゃんぬさん、ありがとうございます。
引用:

じゃんぬねっとさんの書き込み (2006-03-10 17:40) より:

または、引用符が閉じ忘れて式の終わりがないと言っているとか。
たとえば、最後の「'」引用符とか。


目視では、カッコのズレも引用符漏れも無い気がします。

<asp:Label id="lblDbStartYmd" runat="server" Text='<%# databinder.eval(container.dataitem,"startymd") != String.Empty ? DateTime.Parse(databinder.eval(container.dataitem,"startymd")).ToString("yyyy/MM/dd") : string.empty %>'>
</asp:Label>

DateTime.Parse("20060101").ToString("yyyy/MM/dd")
では変換できないのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-10 18:11
引用:

ひろれいさんの書き込み (2006-03-10 18:04) より:

DateTime.Parse("20060101")


そもそも、これはダメですよ。
何が Year で何が Month で何が Day なのかわからないです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-10 18:18
引用:

そもそも、これはダメですよ。
何が Year で何が Month で何が Day なのかわからないです。


そういう事なので、Int32.Parse() の方を使ってくだされ。

_________________
囚人のジレンマな日々

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