не удалось выбрать подотчет - .rdlc - VS 2010 - PullRequest
0 голосов
/ 21 декабря 2011

Я создал много отчетов с VS 2008. Теперь, начиная с VS 2010, мы предъявляем новые требования. Обратите внимание, что я использую отчет .rdlc

  • Я мог бы добавить контроль отчета к отчету, но не мог выбрать доступные отчеты. Нет кнопки просмотра или раскрывающегося списка для выбора доступного отчета .rdlc.

  • Когда я вручную набираю имя отчета, средство просмотра отчетов не отображает никаких вложенных отчетов. Я не вижу ни одного сообщения об ошибке в окне «Вывод».

Как использовать подотчет с VS 2010? Я что-то пропустил? Любая помощь приветствуется.

У меня SQL 2005/2008 (службы отчетов установлены), VS 2008, VS 2010 установлены на том же ПК.

1 Ответ

0 голосов
/ 25 апреля 2012

Сначала выберите подотчет на панели инструментов и укажите, где вы хотите его увидеть. См. Изображение ниже enter image description here
Теперь щелкните правой кнопкой мыши свойства подотчета и введите имя своего подотчета.enter image description here

Теперь вам нужно создать обработчик подотчета даже в вашем файле .cs, откуда вы загружаете отчет следующим образом:

public Ctor()
{
    string path = HttpContext.Current.Server.MapPath("Your Report path");
    ReportViewer1.Reset(); //important
    ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Local;
    ReportViewer1.LocalReport.SubreportProcessing += Process_Subreport;
    LocalReport objReport = ReportViewer1.LocalReport;
    objReport.ReportPath = path;

    // Add Parameter If you need 
    List<ReportParameter> parameters = new List<ReportParameter>();
    parameters.Add(new ReportParameter("Name", Value));
    ReportViewer1.LocalReport.SetParameters(parameters);
    ReportViewer1.ShowParameterPrompts = false;
    ReportViewer1.ShowPromptAreaButton = false;
    ReportViewer1.LocalReport.Refresh();

    //Add Datasourdce
    ReportDataSource reportDataSource = new ReportDataSource();
    reportDataSource.Name = "Datasource Name Used due to report design";
    reportDataSource.Value = DataSourceValue;
    objReport.DataSources.Add(reportDataSource);
    objReport.Refresh();
}

Теперь создайте метод обработки даже для загрузки подзадачиподробности отчета.

private void Process_Subreport(object sender, SubreportProcessingEventArgs e)
{
  //You can get parameter from main report 
  int paramname = int.Parse(e.Parameters[0].Values[0].ToString());
  //You can also add parameter in sub report if you  need like main report

  //Now add sub report data source     
   e.DataSources.Add(new ReportDataSource("DataSource Name",DataSourceValue)));
 }

Я думаю, что это будет работать для вас. Спасибо.

...