WinForms reportViewer (.NET 3.5), связывающий данные из DataTable
WinForms reportViewer (.NET 3.5), связывающий данные из DataTable
Я пытаюсь привязать DataTable, который создается динамически, к элементу управления reportViewer. В Интернете есть много учебников по этому вопросу, но они не подходят для этого проекта... (есть связанные вопросы по переполнению стека, но в моем случае решения не работают)
Это обработчик события для кнопки Показать отчет:
private void btn_ShowRwport_Click(object sender, EventArgs e)
{
//Set the date range for the report
rptctn.SetDateRangeOne(listBox1.SelectedItem.ToString(), dateTimePicker_Start.Value, dateTimePicker_End.Value);
//Get the report datatable
DataTable dt = rptctn.GetReportTest(listBox1.SelectedItem.ToString());
//Set the datagridview
dataGridView1.DataSource = dt;
//Set the reportViewer
this.reportViewer1.LocalReport.DataSources.Clear();
Microsoft.Reporting.WinForms.ReportDataSource rprtDTSource = new Microsoft.Reporting.WinForms.ReportDataSource(dt.TableName, dt);
this.reportViewer1.LocalReport.DataSources.Add(rprtDTSource);
this.reportViewer1.RefreshReport();
}
Я знаю, что DataTable корректно повторяется, так как dataGridView работает... https://docs.google.com/file/d/0B6b_N7sDgjmvZHpEYS1BWWhqZ3c/edit?usp=sharing
Проект имеет следующие ограничения:
Необходимо использовать.NET 3.5 из-за клиентской среды. (так ReportViewer 2008)
Создание DataTable и ReportViewer находятся в разных пакетах (уровень приложения / представления)
Я пытаюсь избежать создания файлов.rdlc, так как отчеты (DataTables) имеют переменное количество строк / столбцов.
Кто-нибудь знает, как я могу связать динамически созданную DataTable со средством просмотра отчетов в моем случае?
1 ответ
На самом деле вы просите динамически создать файл RDLC и добавить таблицу. Я нашел сторонний пример с некоторым кодом из gotreportviewer.com, просто посмотрите вниз на правой стороне страницы для динамического создания RDLC - Таблица.