2010-07-02 2 views
4

Я использую объект localreport в asp.net-приложении. Этот отчет питается массивом объекта. Таким образом, при выдаче отчета вызываются некоторые свойства класса.Культура потока для рендеринга метода LocalReport

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 

Таким образом, кажется, что, когда метод визуализации называется, это запустить поток и принять культуру сервера, а не культура процесс.

Единственный workarround я вижу меняется мой отчет содержит дату и затем дать параметр культуры и форматирование всех мои дат во всех своих докладах данной культуры ...

Так что я действительно надеюсь, что есть способ сообщить отчету принять курентскую культуру потока asp и не принимать какую-либо другую культуру из ниоткуда.

ТНХ заранее

ответ

7

В ".rdlc" Designer на вашем ReportFile, установленный на отчет в Language собственности "=User!Language".

<Report> 
    ... 
    <Language>=User!Language</Language> 
    ... 
</Report> 

, то ваш System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("de-DE"); будет работать на значения в report.Render(...); как даты, и т.д..

Cheers.

Смежные вопросы