- - PR -
DataGrid の表示形式の設定について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-10 18:25
System.Int32.Parse(databinder.eval(container.dataitem,"startymd")).ToString("0000/00/00")
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-03-10 18:48
そうでした。Parseだと厳密にチェックされるので、日付型でないとダメですね。この間、じゃんぬさんに教えていただいたばかりなのに・・・ ・CInt("12.5") ・Int32.Parse("12.5") 申し訳ありません(m_m) 色々と試しているのですが、どうも「三項演算子」が使えないようです。単純に、 Text='<%# databinder.eval(container.dataitem,"startymd") != String.Empty ? "1" : "2" %>' としても同じコンパイルエラーとなりますので。 上記のじゃんぬさんの式も試しましたが、ダメでした。 やはり、空文字と数値の混合は難しそうですね。う〜ん・・・ [ メッセージ編集済み 編集者: ひろれい 編集日時 2006-03-10 18:51 ] | ||||||||
|
投稿日時: 2006-03-10 18:59
じゃあ、三項演算子を抜いた状態ならばできるというのでしょうか? 三項演算子ではなく、 > databinder.eval(container.dataitem,"startymd") != String.Empty が原因だと思っていたのですが、見当違いでしたかね... (良かった言わなくて) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-03-10 19:22
じゃんぬさんが疑われているのは「String.Empty」なのでしょうか? 名前空間が足りないとか。 色々と試しているのですが、 Text='<%# databinder.eval(container.dataitem,"startymd") = "" ? System.Int32.Parse(databinder.eval(container.dataitem,"startymd")).ToString("0000/00/00") : "" %>' でもコンパイルエラーとなりますが、 Text='<%# System.Int32.Parse(databinder.eval(container.dataitem,"startymd")).ToString("0000/00/00") %>' ならOKです。よって、「三項演算子」が原因かな、と。 | ||||||||
|
投稿日時: 2006-03-10 19:24
そうなんですか。出来ない理由が見当たらないんですけどね。 演算子の結合順位が != より三項演算子の方が強い? …と思ったけど違うようですね。 Convert.ToString() 内には 三項演算子を書けるようですし、ソースコード変換に戸惑うんでしょうか。
最後の希望。全部カッコで囲んでしまう! _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2006-03-10 19:43
最後の希望も儚く散ってしまいました(;_;) 囚人さんとじゃんぬさんの技をドッキングしまして、 Text='<%# (databinder.eval(container.dataitem, "startymd") != String.Empty ? System.Int32.Parse(databinder.eval(container.dataitem,"startymd")).ToString("0000/00/00") : String.Empty) %>' としました。コンパイルエラーの内容は変わりましたが・・・ −−−−−−−−−−−− 以下、エラー内容 −−−−−−−−−−−− コンパイル エラー 説明 : この要求の処理に必要なリソースのコンパイル中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソース コードに変更を加えてください。 コンパイラ エラー メッセージ: BC30519: 下位変換しないで呼び出される、アクセス可能な 'ToString' がないため、オーバーロードの解決に失敗しました : //localhost/Test.aspx(111) : error BC30519: 下位変換しないで呼び出される、アクセス可能な 'ToString' がないため、オーバーロードの解決に失敗しました : 'Public Shared Function ToString(value As Long, toBase As Integer) As String': パラメータ 'value' と一致する引数は 'System.Object' から 'Long' へ下位変換します。 'Public Shared Function ToString(value As Long, toBase As Integer) As String': パラメータ 'toBase' と一致する引数は 'String' から 'Integer' へ下位変換します。 'Public Shared Function ToString(value As Integer, toBase As Integer) As String': パラメータ 'value' と一致する引数は 'System.Object' から 'Integer' へ下位変換します。 'Public Shared Function ToString(value As Integer, toBase As Integer) As String': パラメータ 'toBase' と一致する引数は 'String' から 'Integer' へ下位変換します。 'Public Shared Function ToString(value As Short, toBase As Integer) As String': パラメータ 'value' と一致する引数は 'System.Object' から 'Short' へ下位変換します。 'Public Shared Function ToString(value As Short, toBase As Integer) As String': パラメータ 'toBase' と一致する引数は 'String' から 'Integer' へ下位変換します。 'Public Shared Function ToString(value As Byte, toBase As Integer) As String': パラメータ 'value' と一致する引数は 'System.Object' から 'Byte' へ下位変換します。 'Public Shared Function ToString(value As Byte, toBase As Integer) As String': パラメータ 'toBase' と一致する引数は 'String' から 'Integer' へ下位変換します。 target.Text = System.Convert.ToString((databinder.eval(container.dataitem, "startymd") != String.Empty ? System.Int32.Parse(databinder.eval(container.dataitem,"startymd")).ToString("0000/00/00") : String.Empty )) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //localhost/Test.aspx(111) : error BC30198: ')' が必要です。 以下、コンパイルエラーが続きます。 | ||||||||
|
投稿日時: 2006-03-10 19:58
ちょっと違いますけど、比較演算子自体が使えないんじゃないかなと。
試したことがないのでわかりませんが、演算子を含めるだけでダメとか... Text = '<%# (" " == "").ToString(); %>' 分岐を含めるだけでダメとか... Text = '<%# (" " == "") ? "1" : "2"; %>' --- Text = '<%# databinder.eval(container.dataitem, "startymd").ToString != "" ? System.Int32.Parse(databinder.eval(container.dataitem, "startymd")).ToString("0000/00/00") : ""; %>' 試せる環境が欲しい... orz _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-03-10 20:08
Text = '<%# (" " == "") ? "1" : "2"; %>' では、以下のコンパイルエラーとなります。 コンパイラ エラー メッセージ: BC30201: 式が必要です。 //localhost/TMT_test/page/Chinryo.aspx(111) : error BC30201: 式が必要です。 target.Text = System.Convert.ToString((" " == "").ToString()) Text='<%# (" " == "") ? "1" : "2" %>' でも同じコンパイルエラーとなります。 コンパイラ エラー メッセージ: BC30201: 式が必要です。 //localhost/TMT_test/page/Chinryo.aspx(111) : error BC30201: 式が必要です。 target.Text = System.Convert.ToString((" " == "") ? "1" : "2") |