你们是否知道是否有可能,以及如何以编程方式设置报告查看器的报告语言?
例如,像这样:
var reportviewer = new ReportViewer();
reportViewer.LocalReport.Language = CultureInfo.CurrentUICulture;
或者更具体地说,如果可以将报告语言设置为自定义文化以及如何设置?
答案 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
,报告查看器组件中加载屏幕中文本的语言