- - PR -
DataGrid の表示形式の設定について
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-10 13:38
現在、DataGridのテンプレート列に、以下のような設定をしています。
Text='<%# databinder.eval(container.dataitem,"startymd","{0:####/##/##}") %>' ただし、これだと「startymd」のデータが空だった場合、「//」だけ表示されてしまいますので、データが入っている時だけ表示させたいと考えております。 単純にIF文で切り分ければいいのかな、とも思うのですが、<%# %>内にどうやってIF文を書いたらいいのか分からなくて(^^;) ご協力をお願い致します。 | ||||||||
|
投稿日時: 2006-03-10 14:21
{0:カスタム数値書式指定文字列;;}
| ||||||||
|
投稿日時: 2006-03-10 15:09
todoさん、お返事ありがとうございました。 数値形式の場合は、教えていただいたオーバーロード方式でいけそうですね。勉強になりました。 ところで、過去スレでこの方式だと数値項目しかダメということでしたので、VARCHARで保持している日付を数値型にキャスト(SELECT時に)して表示しているのですが、何とかVARCHARの項目のままSELECTして、表示時に日付形式<yyyy/MM/dd>に変換することは出来ないのでしょうか? [ メッセージ編集済み 編集者: ひろれい 編集日時 2006-03-10 15:10 ] | ||||||||
|
投稿日時: 2006-03-10 15:15
できないですね。 数値しか入らないのであれば、Database 側でもそのような型にすべきだと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-03-10 15:24
こんなのできるかな?試してみて下さい。 _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2006-03-10 15:47
囚人さん、じゃんぬさん、お返事ありがとうございます。 数値形式で設定して、todoさん方式でゼロの場合は表示しない、と。確かに、それが1番安全なのかもしれないですね。しかし、ユーザ側の規則で「日付は文字列型」という規則がありまして(^^;) 囚人さん、残念ながら、ダメでした・・・ −−−−−−−−−− 以下、エラー内容 −−−−−−−−−− 入力文字列の形式が正しくありません。 説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.FormatException: 入力文字列の形式が正しくありません。 ソース エラー: 行 108: <HeaderStyle Width="10%"></HeaderStyle> 行 109: <ItemTemplate> 行 110: <asp:Label id="lblDbStartYmd" runat="server" Text='<%# String.Format("{0:####/##/##}", Int32.Parse( databinder.eval( container.dataitem, "startymd"))) %>'> 行 111: </asp:Label> 行 112: </ItemTemplate> ソース ファイル : D:\Test.aspx 行 : 110 スタック トレース: [FormatException: 入力文字列の形式が正しくありません。] System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0 System.Int32.Parse(String s) +38 ASP.Test_aspx.__DataBind__control58(Object sender, EventArgs e) in D:\Test.aspx:110 System.Web.UI.Control.OnDataBinding(EventArgs e) System.Web.UI.Control.DataBind() System.Web.UI.Control.DataBind() System.Web.UI.Control.DataBind() System.Web.UI.WebControls.DataGrid.CreateItem(Int32 itemIndex, Int32 dataSourceIndex, ListItemType itemType, Boolean dataBind, Object dataItem, DataGridColumn[] columns, TableRowCollection rows, PagedDataSource pagedDataSource) System.Web.UI.WebControls.DataGrid.CreateControlHierarchy(Boolean useDataSource) System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) System.Web.UI.WebControls.BaseDataList.DataBind() TMT_test._Chinryo.btnSelect_Click(Object sender, EventArgs e) in D:\Test.aspx.vb:184 System.Web.UI.WebControls.Button.OnClick(EventArgs e) System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) System.Web.UI.Page.ProcessRequestMain() [ メッセージ編集済み 編集者: ひろれい 編集日時 2006-03-10 15:51 ] | ||||||||
|
投稿日時: 2006-03-10 15:58
startymd には必ず数値が入っていないと駄目ですね。
そういえば最初の投稿で空文字が入る可能性があると仰っていましたね。すみません。
こんなのできるかな? _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2006-03-10 16:08
こういう事をすると、その日付が入る箇所が必ず数字のみの文字列が入らないといけません。 「日付は文字列型」と「数値で扱いたい」が喧嘩しているからです。 もう一つ
こうかな。 startymd はどう入っているのでしょう。"20060101"とか?"180101"とか?キチッと日付が分からんような気がしますね。 _________________ 囚人のジレンマな日々 |
1|2|3|4
次のページへ»