如何使用报表查看器10.0在rdlc中显示枚举的字符串表示形式

时间:2011-10-31 19:33:54

标签: .net vb.net visual-studio-2010 rdlc

我已将几个报告从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"

更新 - 02/28/2012 我也尝试了System.ComponentModel.DataAnnotations属性,但仍然没有运气:

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

1 个答案:

答案 0 :(得分:0)

经过长时间的互联网挖掘,我终于找到了解决方案。在字段表达式中只需输入以下代码:

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

source

该解决方案对我有用。