为什么这个布尔字符串格式不起作用?

时间:2010-11-24 13:36:50

标签: vb.net gridview asp.net-3.5 boolean string-formatting

我目前有以下GridView TemplateField

<asp:TemplateField HeaderText="Despatched">
    <ItemTemplate><%# IIf(Eval("Despatched"), "Yes", "No")%></ItemTemplate>
</asp:TemplateField>

这样做很好,但是我已经读过了我可以做以下事情,我觉得这很简洁:

<asp:BoundField HeaderText="Despatched" DataField="Despatched" DataFormatString="{0:Yes;No}" />

但是,这仍然返回True / False值而不是Yes / No

为什么这不起作用?

感谢。

3 个答案:

答案 0 :(得分:8)

AFAIK,bool.ToString()不支持自定义格式字符串,例如{0:是;否},虽然我真的承认这是个好主意: - )

以下代码:

    bool b = true;
    Console.WriteLine("{0:Yes;No}", b);

无论您使用什么.NET框架版本(2,3,4),始终显示True。

答案 1 :(得分:1)

您应该使用DateFormatString将HtmlEncode="false"添加到BoundField:

<asp:BoundField HeaderText="Despatched" DataField="Despatched" DataFormatString="{0:Yes;No}" HtmlEncode="false" />

http://weblogs.asp.net/rajbk/archive/2005/10/31/boundfield-dataformatstring-attribute-not-being-applied.aspx

答案 2 :(得分:-1)

您拥有的代码是准确的。您可以尝试清理并重新编译站点以查看行为是否更改。如果这是来自部署,请在复制新文件之前删除目标。

我感觉Visual Studio没有在部署中更新.aspx文件。我发现这种情况往往发生得太频繁了。