Используйте запрос linq в качестве источника данных для локального отчета Microsoft (WinForms) - PullRequest
4 голосов
/ 20 мая 2011

Как использовать запрос linq в качестве источника данных локального отчета (Microsoft Report) (WinForms)? У меня есть элемент управления Microsoft Report Viewer в MyForm, и у меня есть запрос linq, как это:

var query = from colV in dal.v_TarafeGharardad join colT in dal.TBL_TarafeGharardad on colV.Id equals colT.PK_Id  select colV;

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

frmReportViewer ReportViewerForm = new frmReportViewer();
            ReportViewerForm.rptViewer.LocalReport.DataSources.Add(new ReportDataSource("v_TarafeGharardad",query));
            ReportViewerForm.rptViewer.LocalReport.ReportPath = Application.StartupPath + "rptTarafeGharardad.rdlc";
            ReportViewerForm.Show();

Какое решение? (Спасибо: - *)

Обновление : если я смогу преобразовать запрос linq в DataTable, проблема будет решена.

1 Ответ

3 голосов
/ 20 мая 2011

То, что вы делаете, выглядит в значительной степени правильно. Я делаю именно это (это VB):

rptViewer.LocalReport.ReportPath = <filepath>
rptViewer.LocalReport.DataSources.Clear()
rptViewer.LocalReport.DataSources.Add(New ReportDataSource("<data_source_name_in_report>", <linq_query_result>))
rptViewer.SetDisplayMode(DisplayMode.PrintLayout)

Единственный бит, который вам нужно проверить, - это то, что вы правильно сопоставляете имя источника данных в отчете. Вы можете проверить это, открыв отчет в текстовом редакторе и просмотрев элемент источников данных.

Другая вещь из памяти, и я не использовал это около года, так что я могу ошибаться, у меня возникло ощущение, что вам нужно позвонить либо rptViewer.Refresh(), либо rptViewer.SetDisplayMode(), чтобы заставить его отрендерить .

Загляните на этот веб-сайт для получения дополнительной информации об элементе управления ReportViewer:

http://www.gotreportviewer.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...