Добавление отчетов профессионального качества в приложение пользователя в Visual Studio (2)



         

Строго типизированные отчеты


Теперь, когда я кратко изложил основные принципы создания простых отчетов, давайте перейдем к более сложным вопросам. Подобно тому, как создаются строго типизированные наборы DataSets со своими атрибутами и методами, можно создать строго типизированные отчеты. По своему существу все отчеты, созданные с помощью Crystal Reports и Visual Studio .NET, составляют класс строго типизированных отчетов в качестве побочного продукта самого процесса разработки. Чтобы в этом убедиться, щелкните по кнопке Show All Files (Показать все файлы) в Solution Explorer, перейдите по иерархическому дереву к CustomersBasic.rpt и убедитесь в существовании файла класса, созданного Visual Studio .NET. Я могу создать экземпляр этого класса в программе и назначить его атрибуту ReportSource объекта CrystalReportViewer, содержащегося в моей форме. Для этого я добавлю следующую строку текста программы к событию формы Load (установив атрибут ReportSource формы cvwMain в None в первом окне Properties).

cvwMain.ReportSource = New CustomersBasic()

Подобно строго типизированным наборам DataSets, которые используют разработчик компонентов DataSet, строго типизированные отчеты также имеют соответствующий разработчик компонентов. Если щелкнуть по палитре компонентов Components окна Toolbox в Visual Studio .NET, появится объект под названием ReportDocument. Перетащив его на свою форму, вы увидите имя класса вашего отчета в раскрывающемся списке Name диалогового окна Choose a ReportDocument. Выберите его и щелкните по кнопке OK. Вы получите исполняемый доступный экземпляр класса вашего отчета. Переименуйте этот объект в cbsMain (cbs является префиксом CustomersBasic) и замените следующей строкой текста программы в событии формы Load:

cvwMain.ReportSource = cbsMain

Если вы сейчас снова запустите приложение, то ваш отчет запустится, как и прежде. Этот запуск отличается от предыдущего тем, что, не ссылаясь на конкретный файл, находящийся в конкретном физическом месте, ReportViewer обращается непосредственно к объекту, который может выступать в качестве экземпляра, полученного из соответствующего класса в сборке приложения, внешней сборке или, как вы увидите далее, в XML Web Service.




Содержание  Назад  Вперед