如何在RDLC文件的表达式中使用资源文件的值?
如何在RDLC文件的表达式中使用资源文件的值?
我完全懂你现在卡在哪了——直接在Switch表达式里写CStr(rd:LocID="Function")肯定行不通,因为rd:LocID是报表设计阶段用来标记本地化字段的属性,根本不是能在运行时表达式里执行的语法,这也就是为什么你会碰到“报表定义无效”的错误。
给你两个可行的解决方案,你可以根据自己的项目情况选:
方案一:直接引用资源类
如果你的资源文件(比如ReportResources.resx)已经正确添加到报表项目里,并且把资源文件的访问修饰符设为public(在Visual Studio里右键资源文件→属性就能改),那你可以直接在表达式里通过资源类调用对应的值:
=Switch( Parameters!FunctionFlags.Value = "1,0,0", ReportResources.Function, Parameters!FunctionFlags.Value = "0,1,0", "Option 2", Parameters!FunctionFlags.Value = "0,0,1", "Another option", 1 = 1, "Multiple" )
这里的ReportResources是你的资源文件名(不带.resx后缀),Function就是你要引用的资源键,注意拼写和大小写必须和.resx里的完全一致哦。
方案二:使用LookupResource函数
如果不想依赖具体的资源类,或者你的SSRS版本支持,也可以用内置的LookupResource函数来获取资源值,写法更通用:
=Switch( Parameters!FunctionFlags.Value = "1,0,0", LookupResource("Function"), Parameters!FunctionFlags.Value = "0,1,0", "Option 2", Parameters!FunctionFlags.Value = "0,0,1", "Another option", 1 = 1, "Multiple" )
这个函数只需要传入资源键的字符串就能返回对应的本地化值,不用操心命名空间或者类的问题,前提是你的资源文件已经正确关联到报表,并且资源键存在。
替换掉你原来错误的写法后,报表定义应该就能正常通过验证,并且运行时会根据参数值正确显示对应的资源文本啦。
备注:内容来源于stack exchange,提问作者JanT
相关产品推荐
相关产品推荐

