SQL Serverの値をC#で取得して、WEB上にGridViewで表示しようとしています。
開発はVisual Studio2019、環境はASP.NET Web Forms で行っています。
テーブルには時刻を表す列があり、データ型はtime(7)としています。
その列の値をWEBで表示する際、「09:00」のように時と分のみを表示させたいのですが、「09:00:00」と秒の部分まで表示されてしまいます。
デフォルトの状態から、DataFormatStringの設定(GridViewタスク → 列の編集 → Boundfieldプロパティ → DataFormatString)を {0:t} にしてみましたが、「09:00:00」のまま変化はありませんでした。
つまらないところでひっかかっていそうでお恥ずかしいのですが、有識者の方のお知恵を拝借できれば幸いです。
どうぞよろしくお願いいたします。
https://www.atmarkit.co.jp/ait/articles/0408/27/news104.html
を見ると"HH:mm"で良いのではないのでしょうか
コメントありがとうございます。
"hh:mm"だと、そのままWEB上にも「hh:mm」とアルファベットで文字列が表記されてしまうのです。
{0:HH:mm}といった風に{0}に対して適用したらどうでしょうか。
もしくはコロンが2つになってしまうので、{0:HH\\:mm}といった風に書式指定子に含まれるコロンはエスケープする必要があるかもしれません。
コメント本当にありがとうございます。
{0:HH:mm} も {0:HH\\:mm} も、「入力文字列の形式が正しくありません。」とエラーになってしまいました。
環境はASP.NET Web Formsで合っているでしょうか。合っているのであれば、質問のタグに載せておくとそのジャンルに詳しいユーザから回答がもらえるかもしれません。
---
var now = DateTime.Now;
Console.WriteLine("{0:t}",now);
Console.WriteLine("{0:HH}",now);
Console.WriteLine("{0:HHmm}",now);
Console.WriteLine("{0:HH:mm}",now);
Console.WriteLine("{0:HH\\:mm}",now);
と書いたコードの内、下記2行はどちらも17:45と出たのを確認したのでうまくいくと思いましたが、実際にBoundfieldに入れて試しているわけではないので、何かその環境特有の対処が必要なのかもしれません。
重ね重ねご助言ありがとうございます。
はい、ASP.NET Web Forms です。質問タグを追加してみます。
他のプロパティ項目と関連しているのかもしれませんね。
試せないけど、こんな記事がありました
【C#】GridViewの日付の書式を指定する
https://ameblo.jp/only-human/entry-10084971564.html
aspxファイルで書式を指定している場合はradianさんが紹介したURLにあるHTMLエンコードの有無が関係ありそうな気がします
radian様、BluOxy様
コメントありがとうございます。
ご提示のサイトは確認しており、HtmlEncodeも"False"にしています。
ご提示のサイトのようにソースに直接下記のように記載してみたのですが、「入力文字列の形式が正しくありません。 」とエラーが出てしまうのです。
({0:HH:mm} も {0:HH\\:mm} もエラーになることを確認済み)
<asp:BoundField DataField="starttime" HeaderText="予定開始時間" SortExpression="starttime" HtmlEncode="False" DataFormatString="{0:HH:mm}" />
■エラー内容
'/' アプリケーションでサーバー エラーが発生しました。
入力文字列の形式が正しくありません。
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。
例外の詳細: System.FormatException: 入力文字列の形式が正しくありません。
ソース エラー:
現在の Web 要求の実行中にハンドルされていない例外が生成されました。
■エラー内容(ここまで)
自分で調べたことを、質問に追記しておいた方がいいと思います。
既知の情報だと、二度手間になってしまうので。
ちなみにHHmmだと通りますか。
ソースに直接「DataFormatString="{0:hh\:mm}“」と書くことで解決できました。
( {0:HH:mm}、{0:HH\\:mm}、HHmm はエラーになることを確認済み。私の知識不足でした。)
お忙しいところご助言いただきありがとうございました。
回答2件
あなたの回答
tips
プレビュー

