вторник, 15 июня 2010 г.

Использование отчетов .NET Reporting для печати объектов

Как правило внешний вид данных на форме отличается от того вида, в котором их необходимо вывести на печать, поэтому для формирования печатной страницы удобно использовать отчеты, например, входящие в состав .NET Framework 2.0, rdls файлы.
Программный вывод отчета описан в этой статье, но для вывода на печать оптимальнее всего получить отчет в формате EMF. Xml для описание экспорта будет выглядеть следующим образом:
<DeviceInfo>
<SimplePageHeaders>True</SimplePageHeaders>
<OutputFormat>EMF</OutputFormat>
</DeviceInfo>

Полный текст для получения результата отчета будет выглядеть следующим образом:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Microsoft.Reporting.WinForms.LocalReport report = new Microsoft.Reporting.WinForms.LocalReport();
report.ReportPath = "Report1.rdlc";

string MimeType;
string Encoding;
string FileNameExt;
string[] streams;
Microsoft.Reporting.WinForms.Warning[] aWarn;

string deviceInfo =
"<DeviceInfo>" +
"<SimplePageHeaders>True</SimplePageHeaders>" +
"<OutputFormat>EMF</OutputFormat>" +
"</DeviceInfo>";

byte[] aReport = report.Render("IMAGE", deviceInfo, out MimeType, out Encoding, out FileNameExt, out streams, out aWarn);

MemoryStream memImage = new MemoryStream(aReport);
Image imgReport = Image.FromStream(memImage);

e.Graphics.DrawImage(imgReport, 0, 40);
}

Создание типизированного набора данных (Typed DataSet) для XML/XSD в VS 2008

Часть возникает задача привязки элементов формы к данным, размещенных в XML файле. Самым оптимальным способом является создание типизированного набора данных (Typed Dataset). Для его создания потребуется создать XSD схему для XML файла с данными.
  • Откройте XML файл с данными
  • В главном меню VC 2008 выберите пункт меню XML -> Create Schema
  • Сохраните полученный XSD файл
Данная схема представляет собой обычный файл без возможности привязки данных. Можно дополнить данный XSD файл элементами для связывания данных, например, описанным здесь методом.
  • В окне Solution Explorer выбираем XSD файл, но не открываем его
  • В свойстве Build Action выбираем Content
  • В свойство Custom Tool вписываем MSDataSetGenerator
После сохранения схема XSD появится в окне Data Sources, соответственно можно связывать и создавать связанные с данными элементы формы простым перетаскиванием.