我正在将一个localreport对象用于asp.net应用程序。 此报告由一组对象提供。因此,在报告的呈现中,会调用classe的一些属性。
Class ClassForReport
{
string Date
{
get{return _aDate.ToshortDateString();}
}
}
现在渲染的代码和问题:
//first of all, I change de culture for taking in account the choice of the user
CultureInfo ci = CultureInfo.CreateSpecificCulture(isoLanguageName_);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
//Here, my culture is now: FR-be
MyLocalReport.render(...) // in this method, the property Date above is called. And when debugging I see that the culture is EN !!!
...
//and here, my culture is still Fr-be
因此,当调用方法render时,它会启动一个线程并获取服务器的文化而不是流程的文化。
我看到的唯一的工作方式是将报告更改为包含日期,然后提供文化参数,并在我的所有报告中将所有日期格式化为给定的文化......
所以我真的希望有一种方法可以告诉报告采取asp线程的文化,而不是让其他文化无处不在。
事先提前答案 0 :(得分:7)
在ReportFile上的“.rdlc
”设计器中,在语言属性“=User!Language
”中设置报告。
<Report>
...
<Language>=User!Language</Language>
...
</Report>
然后你的System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("de-DE");
将处理report.Render(...);
日期等的值
干杯。