我想使用C#通過SSRS報告Web服務從報告中讀取所有參數。但是在閱讀DateTime參數時遇到問題。 rdl文件中的參數是英式格式,但它在C#中成爲美式格式。報告參數上的DateTime格式問題,在SSRS報告Web服務中,而不是報告查看器控件
編輯:
我嘗試用下面的代碼設置的文化,但它仍然不能正常工作:
//set it before instantiating ReportingService2010 instance.
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
//set it when reading a date type value
Console.WriteLine("{0} {1} {2}", dateTime.Year, dateTime.Month, dateTime.Day);
Console.WriteLine(dateTime.ToString("yyyy-MM-dd"));
Console.WriteLine(dateTime.ToString("yyyy-MM-dd", new CultureInfo("en-GB", false)));
日期格式是正確的,當報表查看器控制是用過的。通過報表查看器控件讀取參數時,日期值已經正確(dd/MM/YYYY)。但是,當通過報告Web服務讀取相同的參數時,相同的值是另一種格式(MM/dd/YYYY)。我認爲這是設置文化不起作用的原因。
下面是我的代碼:
ReportingService2010 rs = new ReportingService2010();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
string report = "/SampleReports/Employee Sales Summary";
bool forRendering = false;
string historyID = null;
ParameterValue[] values = null;
DataSourceCredentials[] credentials = null;
ItemParameter[] parameters = null;
try
{
parameters = rs.GetItemParameters(report, historyID, forRendering, values, credentials);
if (parameters != null)
{
foreach (ItemParameter rp in parameters)
{
string value = parameter.DefaultValues.FirstOrDefault(); //it becomes US format here
Console.WriteLine("Name: {0}",value);
}
}
}
catch (SoapException e)
{
Console.WriteLine(e.Detail.InnerXml.ToString());
}
ReportingService2010.GetItemParameters Method
任何想法?
未標記答案? – Kiquenet