Почему этот логический строковый формат не работает? - PullRequest
2 голосов
/ 24 ноября 2010

В настоящее время у меня есть следующее 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 ]

8 голосов
/ 24 ноября 2010

AFAIK, bool.ToString () не поддерживает настраиваемую строку форматирования, например {0: Да; Нет}, хотя я действительно признаю, что это было бы неплохо: -)

Следующий код:

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

Всегда отображать True независимо от используемой версии .NET Framework (2, 3, 4).

1 голос
/ 24 ноября 2010

Вы должны добавить HtmlEncode="false" в BoundField с DateFormatString:

<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

0 голосов
/ 24 ноября 2010

Код у вас точный.Вы можете попробовать очистить и перекомпилировать сайт, чтобы увидеть, изменится ли его поведение.Если это из развертывания, удалите место назначения перед копированием новых файлов.

Мне просто кажется, что visual studio не обновляла ваш файл .aspx при развертывании.То, что я обнаружил, часто бывает слишком часто.

...