我已经将几份报告从 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"
更新 - 2012 年 2 月 28 日 我也试过
System.ComponentModel.DataAnnotations
属性,还是不行:
[System.ComponentModel.DataAnnotations.Display(Name = "PRIN")]
[System.ComponentModel.DataAnnotations.DisplayFormat(DataFormatString="G")]
在网上找了很久,终于找到了解决办法。在字段表达式中只需输入以下代码:
=System.Enum.GetName(First(Fields!YourFieldBasedOnEnumType.Value).GetType(), Fields!YourFieldBasedOnEnumType.Value)
那个解决方案对我有用。
你应该试试这个
=第一(字段!YourFieldBasedOnEnumType.Value,“DatasetsName”)