using System; using DevExpress.Xpo; using DevExpress.XtraReports.Native; using System.Collections.Generic; using System.Linq; using System.Web; using EnVisage.Reports.DataSources; using EnVisage.Reports.DataSources.ReportingDataSourceTableAdapters; using DevExpress.XtraReports.UI; namespace Envisage.Code.BLL { public class CustomDataSourceSerializer : IDataSerializer { public const string Name = "CustomDataSourceSerializer"; bool IDataSerializer.CanSerialize(object data, object extensionProvider) { return data is ReportingDataSource; } string IDataSerializer.Serialize(object data, object extensionProvider) { return "ReportingDataSource"; } bool IDataSerializer.CanDeserialize(string value, string typeName, object extensionProvider) { return value == "ReportingDataSource"; } object IDataSerializer.Deserialize(string value, string typeName, object extensionProvider) { return GetDataSource(value); } public static object GetDataSource(string value = "") { var dataSet = new ReportingDataSource(); switch (value) { case "ReportingDataSource": using (var adapter = new SummaryReportTableAdapter()) { adapter.Fill(dataSet.SummaryReport); } using (var adapter = new StatusTableAdapter()) { adapter.Fill(dataSet.Status); } break; } return dataSet; } } }