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

3
我已将几个报告从Visual Studio 2008 Report Builder格式转换为Visual Studio 2010 Report Builder格式。这涉及到转换.RDLC文件并引用新的报表查看器程序集,版本为10.0(旧版是9.0)。
我发现枚举值现在显示为数字值,而旧版本显示枚举值的字符串表示形式。我无法弄清楚如何格式化该值以便显示字符串。
我使用IEnumerable的对象作为我的数据源。我知道我可以添加属性到对象中,以将枚举值公开为字符串 - 但我认为这是最后的办法,因为我要处理数百个报告和对象,而添加这些属性更像是一个hack解决方案,没有实际价值。
所以,我希望有一种更干净的方法来直接通过报表设计器完成格式化枚举值。
在以下枚举中,“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"

更新 - 2012年2月28日 我还尝试使用System.ComponentModel.DataAnnotations特性,但仍然没有成功:

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

我在这里留下了一个解决方案:ReportViewer 和 Enum - user2967640
@f01senoj - 虽然这个方法可以运行,但它不是我最喜欢的选项,因为当你需要将自定义代码添加到数百个报告时,它并不是一个非常可扩展的解决方案。 - J Cooper
2个回答

0
经过长时间在互联网上的搜索,我终于找到了一个解决方案。在字段表达式中只需放入以下代码:
=System.Enum.GetName(First(Fields!YourFieldBasedOnEnumType.Value).GetType(), Fields!YourFieldBasedOnEnumType.Value)

来源

那个解决方案对我很有效。


有没有想过如何从注解中获取枚举描述? - ShP

0

试试这个:

=First(Fields!YourFieldBasedOnEnumType.Value, "DatasetsName")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接