【问题标题】:How to set a Report Viewer's report language programmatically?如何以编程方式设置报表查看器的报表语言?
【发布时间】:2014-07-22 22:21:48
【问题描述】:

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

例如,像这样的:

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

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

【问题讨论】:

  • 我不知道在报表查看器本身上具体设置它,但是报表查看器将使用 Thread.CurrentThread.CurrentCulture 设置的区域性。

标签: reportviewer globalization


【解决方案1】:

想法是将报表的语言设置为表达式“=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"));
    

    “en-GB”会在生成报告时给您一个英镑符号,但您可以使用“fr-FR”或类似的方式获得一个欧元符号。

    确实,您可以将硬编码的“en-GB”替换为函数。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      您可以在页面加载中设置

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

      【讨论】:

        【解决方案4】:

        扩展@tzup 的answer;有两种设置,即

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多