У меня есть данные в моем наборе данных, но они не отображаются в моем средстве просмотра отчетов? - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть программа, которая показывает данные в сетке данных.Данные в сетке данных поступают из таблицы в наборе данных.На экране данные выглядят хорошо, поэтому я решил добавить способ печати данных.

Я создал новую форму, добавил элемент управления ReportViewer и разработал отчет.Я использовал свой набор данных в качестве источника данных для отчета.

Затем я добавил кнопку в исходную форму, чтобы при ее нажатии она отображала форму с элементом управления reportviewer.

Myпроблема в том, что, когда я нажимаю кнопку печати, он переводит меня в форму управления средством просмотра отчетов, но показывает мой отчет только с заголовками, без данных.Как будто в моем наборе данных нет данных!Но когда я перехожу к отладке, в моем наборе данных отображается более 1000 строк.

Итак, мой вопрос: что я забыл сделать?Данные есть, они отображаются в одной форме (с сеткой просмотра данных), но не отображаются в элементе управления ReportViewer (только заголовки).

На самом деле никакого кодирования не было.Я только что создал новую форму, добавил элемент управления reportviewer, спроектировал отчет и велел ему использовать мой набор данных в качестве источника данных.Как правило, это работает для меня.Я не могу понять, почему он не работает.

Спасибо за любую помощь или совет!

Вот код, который я использую для отображения отчета:

private void btnPrint_Click(object sender, EventArgs e)
    {
        Form showReport = new frmPrintView();
        showReport.Show();
    }

Здесьэто изображения моих двух экранов.Данные, очевидно, находятся в моем наборе данных, иначе на первом экране их не было бы.Однако на втором экране мой набор данных выглядит пустым, поскольку только заголовки не отображаются.

enter image description here

enter image description here

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Я думаю, что вам не хватает метода dataBind:

Из экзамена 70-516: TS: Доступ к данным в Microsoft .NET Framework 4:

ASP.NET controls require you to execute the DataBind method on the control to indicate
that the data is ready to be rendered. If you don’t execute the DataBind method, the control won’t render. When executing the DataBind method on a control, the control is obliged to call the DataBind method on its child controls. This means that you can execute the DataBind method on the Web form, and it will call the DataBind method on all its controls

добавьте его в формузагрузить событие в форму отчета

0 голосов
/ 02 марта 2016

видео для поддержки https://www.youtube.com/watch?v=hkDIDTNbA6M

вам нужно снова добавить данные в ваш набор данных из базы данных

 billDataSet b1 = new billDataSet();

SqlDataAdapter s = new SqlDataAdapter("select * from TblOrder",con);

s.Fill(b1,b1.Tables[0].TableName);

ReportDataSource rds = new ReportDataSource("orders",b1.Tables[0]);

this.reportViewer1.LocalReport.DataSources.Clear();

this.reportViewer1.LocalReport.DataSources.Add(rds);

this.reportView er1.LocalReport.Refresh();

this.TblOrderTableAdapter.Fill(this.billDataSet.TblOrder, d1.ToString(),d2.ToString(), companyid);

this.reportViewer1.RefreshReport();
...