如何以编程方式设置报表查看器的报表语言?

时间:2014-07-22 22:21:49

标签: reportviewer globalization

你们是否知道是否有可能,以及如何以编程方式设置报告查看器的报告语言?

例如,像这样:

var reportviewer = new ReportViewer();
reportViewer.LocalReport.Language = CultureInfo.CurrentUICulture;

或者更具体地说,如果可以将报告语言设置为自定义文化以及如何设置?

4 个答案:

答案 0 :(得分:3)

我们的想法是将报告的语言设置为表达式“=User!Language”,然后在呈现报告之前更改线程文化。

如果您在VS中编辑报表,则可以轻松实现设计器中的第一部分(在设计器中打开rdlc,转到属性,从rdlc中的对象列表中选择报表,编辑属性语言),然后对于第二部分:

var cultureBkp = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
// Build report ...
Thread.CurrentThread.CurrentCulture = cultureBkp;

答案 1 :(得分:1)

这不是特别适用于ReportViewer,但如果您以编程方式(.rdlc)创建localreport,则无需更改用户文化。打开rdlc报告,在报告的属性中设置'语言'属性为您选择的参数,例如

=Parameters!ReportLanguage.Value

不幸的是,您无法将此属性设置为数据集字段(至少在Visual Studio 2013中不是这样)

在ReportData屏幕(Ctrl + ALT + D)中,创建一个名为' ReportLanguage'的参数。您只需要设置名称,不需要添加任何额外的详细信息。

在报表的文本框中,设置FormatCurrency表达式

=FormatCurrency(Fields!UnitPrice.Value, 2)

这会将文本框值的货币格式化为报告的语言(小数点后两位)

现在,在生成报告的代码(C#)中,设置ReportLanguage参数

LocalReport localReport = new LocalReport();

localReport.ReportPath = pathToMyRdlcFile;
localReport.SetParameters(new ReportParameter("ReportLanguage", "en-GB"));

"烯GB"生成报告时会给你一个符号,但你可以使用" fr-FR"来获得欧元符号。或类似的。

确实,您可以替换硬编码的" en-GB"有功能。

希望这有帮助。

答案 2 :(得分:1)

您可以在pageload中设置

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(“ja-JP”);

答案 3 :(得分:0)

扩展@ tzup' s answer;有两个设置,即

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");

前者设置内置字段User!Language,而后者则影响其他按钮的语言,例如View Report,报告查看器组件中加载屏幕中文本的语言