ReportViewer – сложности которые Вас подстерегают
Я думаю любой начинающий программист, а может и не начинающий при составлении отчетов сталкиваются с компонентом ReportViewer из набора.Net Framework при
разработке программного обеспечения.
ReportViewer достаточно простой компонент для построения отчетов, имеющий свой собственный набор контролов, такие как Textbox, Line, Table, Image, Chart и т.д. Этих контролов вполне хватает для построения простых отчетов.
В этой статье я покажу Вам пример, который позволит построить простейший отчет, а самое главное сложности, с которыми мне пришлось столкнуться.
Начнем непосредственно с приложения.
Первое что необходимо сделать - это добавить форму к Вашему проекту, в меню выбираете Project ->Add Windows Form.
Когда перед Вами откроется форма, на нее необходимо будет добавить Control ReportViewer.
Вам откроется дизайнер отчета.
Теперь необходимо создать источник данных для дизайнера отчетов, создаете класс Report и добавляете его из главного меню Data -> Add New Data Sources -> Object и выбирает класс Report, представленный ниже.
public class Report
{
private string fioExpert = "";
public Report(string fio)
{
fioExpert = fio;
}
public string FIOEXP
{
get { return fioExpert; }
}
}
Теперь Вам необходимо добавить непосредственно сам дизайнер отчета, выбираете
Project ->Add New Item -> Report и переносите туда все необходимые данные из DataSources.
После этого Вам необходимо подписаться на событие формы “Load”.
В этом событии Вы должны будете подключить отчет и добавить информацию о источнике данных.
//Событи загрузки формв
private void Form1_Load(object sender, EventArgs e)
{
//Колекция ксласса с набором данных
f_lst = new List();
//В нашем классе всего один параметр, его и добавляем
f_lst.Add(new Report("Иванов Иван Иванович"));
//Указываем расположение нашего отчета
this.reportViewer1.LocalReport.ReportPath = "..\\..\\Report.rdlc";
//Подключаем к нему источник данных
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("WindowsApplication1_Report", f_lst));
//Обновляем наш отчет
this.reportViewer1.RefreshReport();
}
Вот и все можно запускать проект.
Основные свойства для работы с отчетами.
1. Если кликнуть в свободной области отчета .rdcl, то можно насроить параметры Page Header, Page Footer и другие свойства для отчета.
2. Для отбражения табличных данных необходимо использовать элемент Table из набора контролов для отчета.
Проблемы с которыми я столкнулся!!!
1. Первая ошибка, которую не стоит совершать это динамическое создание отчета ReportViewer reportViewer = new ReportViewer(), только добавление из набора контролов ToolBox.
2. При указании локального рассположения отчета LocalReport.ReportPath = "Report.rdcl", очень важно учитывать откуда его берет программа и откуда он считывается физически.
Например, если Вы редактируете отчет в корне программы "..\\..\\Report.rdlc", а в прогррамме указываете другое расположение отчета например "Report.rdlc", то необходимо каждый раз после компиляции копировать отчет в то место, откуда берет его программа, чтоб все изменения вступали в силу.
На сегодня все, если появятся вопросу буду рад ответить.
Интернет решение по учету и ведению базы клиентов