如何通过编程设置报告查看器的报告语言?

3

你们当中是否有人知道如何以编程方式设置报表查看器的报表语言?

例如,像这样:

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

更具体地说,是否可以将报告语言设置为自定义区域性文化,并且如何实现?


我不知道如何在报表查看器本身上进行特定设置,但是报表查看器将使用Thread.CurrentThread.CurrentCulture设置的区域设置。 - Glen
4个回答

5

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

如果您在VS中编辑报表,您可以很容易地在设计器中实现第一部分(打开rdlc设计器,转到属性,从rdlc对象列表中选择报表,编辑语言属性),然后进行第二步:

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

2

虽然这并不是特别针对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”。

希望这能有所帮助。

"

1
你可以在页面加载时设置:
Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ja-JP");

0

为了扩展@tzup的答案; 有两个设置,即

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

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


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