Как отобразить строковое представление перечисления в rdlc с помощью средства просмотра отчетов 10.0 - PullRequest
2 голосов
/ 31 октября 2011

Я преобразовал несколько отчетов из формата построителя отчетов Visual Studio 2008 в формат построителя отчетов Visual Studio 2010.Это включало преобразование файлов .rdlc и обращение к новой сборке средства просмотра отчетов, версия 10.0 (старая версия была 9.0).

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

Я использую IEnumerable объектов в качестве моих источников данных.Я знаю, что мог бы добавить свойства к объектам, чтобы выставить значения перечисления в виде строк, но я бы посчитал это последним средством, поскольку я говорю о сотнях отчетов и объектов, плюс добавление этих свойств - это скорее решение для взлома, которое действительно добавляетнет цели для объектной модели.

Так что я надеюсь, что есть более чистый способ выполнить форматирование значений перечисления непосредственно через дизайнер отчетов.

В следующем перечислении должно отображаться PaymentBucketTyp.PRINв отчете как «PRIN», а не «0», PaymentBucketType.AINT должно отображаться как «AINT»:

Public Enum PaymentBucketType
    PRIN
    AINT
    CORT
    ATTY
    MISC
End Enum

Я пробовал следующие выражения:

=Fields!Bucket.Value
=Fields!Bucket.Value.ToString()
=CStr(Fields!Bucket.Value)
=Fields!Bucket.Value.ToString("G") 'produces #Error

У меня естьтакже попытался установить формат текстового поля на ="G"

ОБНОВЛЕНИЕ - 28.02.2012 Я также попробовал System.ComponentModel.DataAnnotations атрибуты, но все же не повезло:

[System.ComponentModel.DataAnnotations.Display(Name = "PRIN")]
[System.ComponentModel.DataAnnotations.DisplayFormat(DataFormatString="G")]

1 Ответ

0 голосов
/ 02 августа 2017

После долгих копаний в интернете наконец-то нашел решение. В поле выражения просто введите этот код:

=System.Enum.GetName(First(Fields!YourFieldBasedOnEnumType.Value).GetType(), Fields!YourFieldBasedOnEnumType.Value)

источник

Это решение работает для меня.

...