Я не знаю, действительно ли это то, что вам нужно, но я могу подумать о двух способах, которыми вы могли бы выдумать:
- Вы можете настроить свой отчет таким образом, чтобы «база данных» представляла собой файл XSD без знания реального бэкэнда. Затем во время выполнения вы отправляете данные в отчет.
// Создать экземпляр во время выполнения, соответствующий вашей среде - только пример:
ReportClass rc = new ReportClass ();
rc.Load (crystalReportFileName);
rc.SetDataSource (myIEnumerableData);
CrystalReportViewer crv = new CrystalReportViewer ();
crv.ReportSource = rc;
// Отображение Crystal Viewer.
2 - Вы можете сделать то же самое, что и 1 на сервере (независимо от подхода к базе данных), затем сохранить отчет и отправить его клиенту.
// Некоторые службы / методы на стороне сервера и т. Д.
публичный байт [] GetMyReport ()
{
ReportClass rc = new ReportClass ();
* 1 028 * rc.Load (crystalReportFileName); * +1029 *
rc.SetDataSource (myIEnumerableData); * 1 031 *
rc.SaveAs (serverSideFile, True); // True имеет решающее значение для сохранения данных с отчетом
return .... // преобразование созданного файла в байтовый массив, я полагаю
}
// Клиентская сторона
byte [] rep = Сервер. GetMyReport ()
ReportClass rc = ..... // преобразовать респ обратно в отчет Crystal
CrystalReportViewer crv = new CrystalReportViewer ();
crv.ReportSource = rc;