1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using DevExpress.XtraReports.UI;
- using Microsoft.AspNetCore.Hosting;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Web;
- namespace MTWorkHR.Infrastructure.Reports
- {
- public class CustomReportStorageWebExtension : DevExpress.XtraReports.Web.Extensions.ReportStorageWebExtension
- {
- // private readonly GlobalInfo globalInfo;
- // private readonly AppSettingsConfiguration settings;
- public CustomReportStorageWebExtension()
- {
- }
- public override byte[] GetData(string url)
- {
- try
- {
- // Parse the string with the report name and parameter values.
- string[] parts = url.Split('?');
- string reportName = parts[0];
- string parametersQueryString = parts.Length > 1 ? parts[1] : String.Empty;
- // Create a report instance.
- XtraReport report= getReport(reportName);
-
- if (report != null)
- {
- // Apply the parameter values to the report.
- var parameters = HttpUtility.ParseQueryString(parametersQueryString);
- foreach (string parameterName in parameters.AllKeys)
- {
- if (parameters.Get(parameterName) != "null"&& parameters.Get(parameterName) != null)
- {
- report.Parameters[parameterName].Value = Convert.ChangeType(
- parameters.Get(parameterName), report.Parameters[parameterName].Type);
- }
- }
- // Disable the Visible property for all report parameters
- // to hide the Parameters Panel in the viewer.
- foreach (var parameter in report.Parameters)
- {
- parameter.Visible = false;
- }
- // If you do not hide the panel, disable the report's RequestParameters property.
- // report.RequestParameters = false;
- using (MemoryStream ms = new MemoryStream())
- {
- report.SaveLayoutToXml(ms);
- return ms.ToArray();
- }
- }
- }
- catch (Exception ex)
- {
- throw new DevExpress.XtraReports.Web.ClientControls.FaultException(
- "Could not get report data.", ex);
- }
- throw new DevExpress.XtraReports.Web.ClientControls.FaultException(
- string.Format("Could not find report '{0}'.", url));
- }
- private XtraReport getReport(string reportName)
- {
- switch (reportName)
- {
- case "ContractReport":
- return new ContractReport();
- case "EmployeeContract":
- return new EmployeeContract();
- default: return null;
- }
- }
-
- }
- }
|