EnVisageOnline/Main-RMO/Source/EnVisage/Code/BLL/Reports/ReportDataSourceSerializer.cs

56 lines
1.6 KiB
C#

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;
}
}
}