我的网站使用如下创建的自定义区域性:
var cib = new CultureAndRegionInfoBuilder("en-gb-xxxx", CultureAndRegionModifiers.None);
cib.LoadDataFromCultureInfo(new CultureInfo("en-gb"));
cib.LoadDataFromRegionInfo(new RegionInfo("en"));
cib.Register();
它们的用法是这样的:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-gb-xxxx");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-gb-xxxx");
在我想用ReportViewer控件呈现报表之前,一切都工作得很好。报告文本呈现正常,但图像失败,我得到以下错误:
- System.Globalization.CultureNotFoundException:不支持区域性。参数名称:区域性4096(0x1000)是无效的区域性标识符 *
经过大量的谷歌搜索,我发现很多其他人问同样的问题,不幸的是总是没有答案。This article非常清楚地描述了问题,但没有提供任何解决方案。
有没有人可以提供,如果不是一个修复,一个变通办法?
4条答案
按热度按时间oxosxuxt1#
由于没有答案,我不得不通过我的方式:
首先,我创建了一个
CustomReportViewer
,它继承了原生Microsoft.Reporting.WebForms.ReportViewer
,覆盖了OnPreRender
方法。它检查已登录用户的区域性(保存在会话中),并回滚到父区域性(如果有)。然后我改变了aspx页面中的对象:
这就对了
我不接受这个答案,希望有人能想出点什么来...吸尘器
qncylg1j2#
我找到了解决上述问题的方法:
问题:
在报表查看器中,导出时不支持区域性。参数名称:区域性4096(0x 1000)是无效的区域性标识符。
解决方案:
1.)在顶部添加下面的指令
或
2.)添加事件如下:
3.)更新Reportviewer html标记如下:
这段代码可能会帮助你。
非常感谢!
0s7z1bwu3#
在发送到SSRS之前尝试此操作
例如:
czq61nw14#
然后,当您不使用ReportViewer直接将rdlc报表渲染/导出为其他格式时,会有以下答案:Culture of thread for method render of LocalReport