powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MS ReportViewer 10 (WEB), .rdlc и вьювер в разных сборках
3 сообщений из 3, страница 1 из 1
MS ReportViewer 10 (WEB), .rdlc и вьювер в разных сборках
    #37630159
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Как отобразить отчёт во въювере, когда сами файлы .rdlc в другой сборке, когда в одной проблем нет, указал в ReportEmbeddedResource и отобразил, в вот когда в разных сборках, отчёт не находится (хотя указываю полное имя с неймспейсом).
2. как можно подготовить отчёт удалённое (на wcf сервисе скажем), передать в виде byte[] и отобразить во вьювере. Метод Render предполагает указание формата (Excel, PDF, Word, and Image), а мне нужно во вьювер засунуть удалённо-сформированный отчёт.
...
Рейтинг: 0 / 0
MS ReportViewer 10 (WEB), .rdlc и вьювер в разных сборках
    #37630859
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По первому нашёл
нужно из ресурса сборки вытаскивать rdlc.

Код: c#
1.
2.
3.
4.
5.
         Assembly a = [Assembly нужной сборки];
         string rname = string.Format("{0}.{1}", a.GetName(false).Name, "Report1.rdlc");         
         var stream = a.GetManifestResourceStream(rname);

         this.ReportViewer1.LocalReport.LoadReportDefinition(stream);



Есть вопрос такой.
В отчёт как правило делают на основании данных, данные получаеют не всегда моментально, но вьювер "крутится"( типа занят) только когда уже по полученным данным рисует отчёт, как сделать чтобы прогрессбар критился пока данные тянутся из БД?
На aspx страничке я вызываю метод, в котором загружаю отчёт из ресурсов сборки и получаю данные и добавляю к отчёту.
Можно как то сделать средствами виювера, чтобы данные грузились из БД, а пользователь видел страницу в котором крутится прогресбар. Но я не нахожу у вьювера нужного события или воркера, куда вставить код получения данных.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
      public static void LoadReportDefinition(LocalReport report, string reportName)
      {
         var goodsTable = DataHelper.GetGoodsTable(); //Получаем данные
         var a = typeof(ReportHelper).Assembly;
         string rname = string.Format("{0}.{1}.rdlc", a.GetName(false).Name, reportName);
         var stream = a.GetManifestResourceStream(rname);                  
         report.DataSources.Add(new ReportDataSource("DataSet1", goodsTable));
         report.LoadReportDefinition(stream);         
      }
...
Рейтинг: 0 / 0
MS ReportViewer 10 (WEB), .rdlc и вьювер в разных сборках
    #37631203
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось только так. ХЗ так и нужно делать или криво
в PrepareReport
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
      public static void PrepareReport(LocalReport report, string reportName)
      {
         var a = typeof(ReportHelper).Assembly;
         string rname = string.Format("{0}.{1}.rdlc", a.GetName(false).Name, reportName);
         var stream = a.GetManifestResourceStream(rname);                           
         report.DataSources.Add(new ReportDataSource("DataSet1", new DataTable("DUMMY"))); //Пустая таблица
         report.LoadReportDefinition(stream);         
      }
      ........


      void ReportViewer1_Init(object sender, EventArgs e)
      {
         if (!IsPostBack)
         {
            ReportLibrary.ReportHelper.PrepareReport(this.ReportViewer1.LocalReport, "Report1");
         }
      }
               
      void ReportViewer1_PreRender(object sender, EventArgs e)
      {
         if (IsPostBack)
         {
            var ds = this.ReportViewer1.LocalReport.DataSources[0];
            if (((System.Data.DataTable)ds.Value).TableName == "DUMMY") // Если данные ещё не получали, получим
            {  
               this.ReportViewer1.LocalReport.DataSources[0].Value = WebService.Data.DataHelper.GetGoodsTable();
            }
         } 
      }

      void ReportViewer1_ReportRefresh(object sender, System.ComponentModel.CancelEventArgs e)
      {
         if (IsPostBack)
         {
            ReportLibrary.ReportHelper.PrepareReport(this.ReportViewer1.LocalReport, "Report1");
            this.ReportViewer1.LocalReport.DataSources[0].Value = WebService.Data.DataHelper.GetGoodsTable();
         }
      }
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MS ReportViewer 10 (WEB), .rdlc и вьювер в разных сборках
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]