トップ回答者
BOUND列で数値が0の場合、未表示にする書式設定は?

質問
回答
-
> %表示も同様のようです。 HtmlEncode="false"をいれないと書式設定はできないようですね。
私の環境では HtmlEncode は true であっても false であっても、書式設定は適用されます。ただ、#,### という書式文字列が 0 になってしまうという問題はあるように見えます。
足羽の桜さんは「できない」としかかかれていないので、具体的にどんな設定をしてどのような結果になってしまったのかはわかりませんが、おそらく数値用の書式を設定しているのが原因だと思われます。
ちょっと調べたところ、HtmlEncode が true の場合、フィールドは強制的に文字列型に変換されてしまうというのが ASP.NET の仕様のようです。この場合、0 という数値は "0" という文字列へ変換され、HTMLEncode が実施された後に書式指定が適用されるため、このような動作になっているようです。
HtmlEncode はフィールドの値がエスケープを必要な値を保持していないことが保障されているなら、false に変更しておくとよいかんじですね。(デフォルトが true なのは、どんなテーブルのカラムが設定されるかわからないからでしょうか)
個人的には書式指定による値のフォーマット化を先に行うこともできるんじゃないかと思ったりしましたが、そうすると書式指定文字列に含まれたエスケープするべきでないエスケープ対象文字と、データベースから取り出した値としてのエスケープするべきエスケープ対象文字の区別をすることが非常に困難になってしまうので、このような仕様なのだと思います。
すべての返信
-
> %表示も同様のようです。 HtmlEncode="false"をいれないと書式設定はできないようですね。
私の環境では HtmlEncode は true であっても false であっても、書式設定は適用されます。ただ、#,### という書式文字列が 0 になってしまうという問題はあるように見えます。
足羽の桜さんは「できない」としかかかれていないので、具体的にどんな設定をしてどのような結果になってしまったのかはわかりませんが、おそらく数値用の書式を設定しているのが原因だと思われます。
ちょっと調べたところ、HtmlEncode が true の場合、フィールドは強制的に文字列型に変換されてしまうというのが ASP.NET の仕様のようです。この場合、0 という数値は "0" という文字列へ変換され、HTMLEncode が実施された後に書式指定が適用されるため、このような動作になっているようです。
HtmlEncode はフィールドの値がエスケープを必要な値を保持していないことが保障されているなら、false に変更しておくとよいかんじですね。(デフォルトが true なのは、どんなテーブルのカラムが設定されるかわからないからでしょうか)
個人的には書式指定による値のフォーマット化を先に行うこともできるんじゃないかと思ったりしましたが、そうすると書式指定文字列に含まれたエスケープするべきでないエスケープ対象文字と、データベースから取り出した値としてのエスケープするべきエスケープ対象文字の区別をすることが非常に困難になってしまうので、このような仕様なのだと思います。