你们当中是否有人知道如何以编程方式设置报表查看器的报表语言?
例如,像这样:
var reportviewer = new ReportViewer();
reportViewer.LocalReport.Language = CultureInfo.CurrentUICulture;
更具体地说,是否可以将报告语言设置为自定义区域性文化,并且如何实现?
你们当中是否有人知道如何以编程方式设置报表查看器的报表语言?
例如,像这样:
var reportviewer = new ReportViewer();
reportViewer.LocalReport.Language = CultureInfo.CurrentUICulture;
更具体地说,是否可以将报告语言设置为自定义区域性文化,并且如何实现?
该想法是将报表的语言设置为表达式 "=User!Language
",然后在呈现报表之前更改线程文化。
如果您在VS中编辑报表,您可以很容易地在设计器中实现第一部分(打开rdlc设计器,转到属性,从rdlc对象列表中选择报表,编辑语言属性),然后进行第二步:
var cultureBkp = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
// Build report ...
Thread.CurrentThread.CurrentCulture = cultureBkp;
虽然这并不是特别针对ReportViewer,但如果您正在编写一个本地报表程序(.rdlc),则无需更改用户的区域设置。打开rdlc报表,在报表属性中将“语言”属性设置为您选择的参数即可。
=Parameters!ReportLanguage.Value
很遗憾,你不能将此属性设置为数据集字段(至少在Visual Studio 2013中不行)
在ReportData屏幕(Ctrl + ALT + D)中,创建一个名为“ReportLanguage”的参数。您只需要设置名称,无需添加任何其他详细信息。
在报表的文本框中,设置一个FormatCurrency表达式。
=FormatCurrency(Fields!UnitPrice.Value, 2)
这将把文本框的货币格式化为报告语言(保留2位小数)
现在在生成报告的代码(C#)中设置ReportLanguage参数
LocalReport localReport = new LocalReport();
localReport.ReportPath = pathToMyRdlcFile;
localReport.SetParameters(new ReportParameter("ReportLanguage", "en-GB"));
使用“fr-FR”或类似语言环境将生成欧元符号,而“en-GB”将生成英镑符号。
实际上,您可以使用一个函数来替换硬编码的“en-GB”。
希望这能有所帮助。
"为了扩展@tzup的答案; 有两个设置,即
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
前者设置内置字段User!Language
,而后者影响报表查看器组件中按钮的语言,例如View Report
,以及加载屏幕中文本的语言。