我目前有以下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
为什么这不起作用?
感谢。
答案 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" />
答案 2 :(得分:-1)
您拥有的代码是准确的。您可以尝试清理并重新编译站点以查看行为是否更改。如果这是来自部署,请在复制新文件之前删除目标。
我感觉Visual Studio没有在部署中更新.aspx文件。我发现这种情况往往发生得太频繁了。