Winforms ReportViewer и правильная настройка параметров для ServerReport
Я устанавливаю параметры для отчета, который я показываю в элементе управления ReportViewer, и параметры устанавливаются правильно, и отчет выполняется с правильными параметрами, однако фактические элементы управления, которые обеспечивают критерии отчета в верхней части ReportViewer, не являются выбран. Почему в критериях не выбраны правильные элементы, даже если отчет правильно работает с заданными мною критериями?
ReportParameter month = new ReportParameter("month", "September 2011");
SsrsReportInfo reportInfo = new SsrsReportInfo("Summary", "http://server/ReportServer/", "/MyFolder/Summary", month);
this.reportViewer1.ServerReport.ReportPath = reportInfo.ReportPath;
this.reportViewer1.ServerReport.ReportServerUrl = new Uri(reportInfo.ReportServerUrl);
if (reportInfo.Parameters != null)
{
this.reportViewer1.ServerReport.SetParameters(reportInfo.Parameters);
}
this.reportViewer1.RefreshReport();
Вот код для класса reportInfo:
/// <summary>
/// SSRS report information for report viewer.
/// </summary>
public class SsrsReportInfo
{
/// <summary>
/// Initializes a new instance of the <see cref="SsrsReportInfo"/> class.
/// </summary>
/// <param name="reportName">Name of the report.</param>
/// <param name="reportServerUrl">The report server URL.</param>
/// <param name="reportPath">The report path.</param>
public SsrsReportInfo(string reportName, string reportServerUrl, string reportPath)
: this(reportName, reportServerUrl, reportPath, null)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="SsrsReportInfo"/> class.
/// </summary>
/// <param name="reportName">Name of the report.</param>
/// <param name="reportServerUrl">The report server URL.</param>
/// <param name="reportPath">The report path.</param>
/// <param name="reportParameters">The report parameters.</param>
public SsrsReportInfo(string reportName, string reportServerUrl, string reportPath, params ReportParameter[] reportParameters)
{
this.ReportName = reportName;
this.ReportServerUrl = reportServerUrl;
this.ReportPath = reportPath;
this.Parameters = reportParameters;
}
/// <summary>
/// Gets or sets the name of the report.
/// </summary>
/// <value>The name of the report.</value>
public string ReportName
{
get;
set;
}
/// <summary>
/// Gets or sets the report server URL.
/// </summary>
/// <value>The report server URL.</value>
public string ReportServerUrl
{
get;
set;
}
/// <summary>
/// Gets or sets the report path.
/// </summary>
/// <value>The report path.</value>
public string ReportPath
{
get;
set;
}
/// <summary>
/// Gets or sets the parameters.
/// </summary>
/// <value>The parameters.</value>
public ReportParameter[] Parameters
{
get;
set;
}
}
Спасибо,
отметка
1 ответ
Я понял проблему здесь. У меня был код, устанавливающий путь, URL, параметры и обновление отчета в конструкторе Form. Я переместил его в событие Form.Load, и теперь оно работает нормально. Отчеты по-прежнему работают правильно, но теперь параметры правильно установлены и в пределах части критериев в верхней части ReportViewer.
У меня было то же использование, показанное здесь: http://technet.microsoft.com/es-es/library/aa337089(SQL.90).aspx, однако заметил, что они сделали это в событии Form.Load, и я попробовал это и это сработало. Возможно, я мог бы сделать это и в событии ReportViewer.Load, причина этого, вероятно, в том, что элементы управления еще не прорисованы на экране до установки значений.