尝试下载 Crystal 报告 PDF 时出错
Error trying to download Crystal Report PDF
我正在尝试实施 Crystal 报告到我的项目
我的家庭控制器:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Biblioteca.Models;
using CrystalDecisions.CrystalReports.Engine;
namespace Biblioteca.Controllers
{
public class HomeController : Controller
{
private BibliotecaDatabase db = new BibliotecaDatabase();
public ActionResult Index()
{
var totalesviewmodel = new TotalesViewModel();
totalesviewmodel.MontoCopias = db.AlumnosList.Sum(o => o.Copias);
totalesviewmodel.MontoImpresiones = db.AlumnosList.Sum(o => o.Impresiones);
totalesviewmodel.DineroDeposito = db.AlumnosList.Sum(o => o.Deposito);
totalesviewmodel.DineroSap = db.AlumnosList.Sum(o => o.Sap);
totalesviewmodel.MontoCopiasMaestro = db.MaestrosList.Sum(o => o.Copias);
totalesviewmodel.MontoImpresionesMaestro = db.MaestrosList.Sum(o => o.Impresiones);
return View(totalesviewmodel);
}
public ActionResult Reports()
{
List<Alumno> allDatos = new List<Alumno>();
using (BibliotecaEntities dc = new BibliotecaEntities())
{
allDatos = dc.Alumnos.ToList();
}
return View(allDatos);
}
public ActionResult ExportReport()
{
List<Alumno> allDatos = new List<Alumno>();
using (BibliotecaEntities dc = new BibliotecaEntities())
{
allDatos = dc.Alumnos.ToList();
}
ReportDocument rd = new ReportDocument();
rd.Load(Path.Combine(Server.MapPath("~/Reports"), "rpt_datos.rpt"));
rd.SetDataSource(allDatos);
Response.Buffer = false;
Response.ClearContent();
Response.ClearHeaders();
try
{
Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/pdf", "DatoList.pdf");
}
catch (Exception ex)
{
throw;
}
}
public ActionResult Contact ()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
当我尝试下载报告的 PDF 文件时,我的项目停止在:
rd.SetDataSource(allDatos);
出现此错误:
An exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll but was not handled in user code
当我点击继续时,我的浏览器显示:
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
我做错了什么?
那是因为您在功能代码块的 using
范围之外编写此代码:
rd.SetDataSource(allDatos);
尝试将这些代码行写入 using
代码块,或者如果这不是您的问题,您可以删除 using
。
希望对您有所帮助。
天哪,非常感谢,你帮了我大忙!...回答:在代码的最后关闭使用块,如下所示:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Biblioteca.Models;
using CrystalDecisions.CrystalReports.Engine;
namespace Biblioteca.Controllers
{
public class HomeController : Controller
{
private BibliotecaDatabase db = new BibliotecaDatabase();
public ActionResult Index()
{
var totalesviewmodel = new TotalesViewModel();
totalesviewmodel.MontoCopias = db.AlumnosList.Sum(o => o.Copias);
totalesviewmodel.MontoImpresiones = db.AlumnosList.Sum(o => o.Impresiones);
totalesviewmodel.DineroDeposito = db.AlumnosList.Sum(o => o.Deposito);
totalesviewmodel.DineroSap = db.AlumnosList.Sum(o => o.Sap);
totalesviewmodel.MontoCopiasMaestro = db.MaestrosList.Sum(o => o.Copias);
totalesviewmodel.MontoImpresionesMaestro = db.MaestrosList.Sum(o => o.Impresiones);
return View(totalesviewmodel);
}
public ActionResult Reports()
{
List<Alumno> allDatos = new List<Alumno>();
using (BibliotecaEntities dc = new BibliotecaEntities())
{
allDatos = dc.Alumnos.ToList();
}
return View(allDatos);
}
public ActionResult ExportReport()
{
List<Alumno> allDatos = new List<Alumno>();
using (BibliotecaEntities dc = new BibliotecaEntities())
{
allDatos = dc.Alumnos.ToList();
ReportDocument rd = new ReportDocument();
rd.Load(Path.Combine(Server.MapPath("~/Reports"), "rpt_datos.rpt"));
rd.SetDataSource(allDatos);
Response.Buffer = false;
Response.ClearContent();
Response.ClearHeaders();
try
{
Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/pdf", "DatoList.pdf");
}
catch (Exception ex)
{
throw;
}
}
public ActionResult Contact ()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
}
我正在尝试实施 Crystal 报告到我的项目
我的家庭控制器:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Biblioteca.Models;
using CrystalDecisions.CrystalReports.Engine;
namespace Biblioteca.Controllers
{
public class HomeController : Controller
{
private BibliotecaDatabase db = new BibliotecaDatabase();
public ActionResult Index()
{
var totalesviewmodel = new TotalesViewModel();
totalesviewmodel.MontoCopias = db.AlumnosList.Sum(o => o.Copias);
totalesviewmodel.MontoImpresiones = db.AlumnosList.Sum(o => o.Impresiones);
totalesviewmodel.DineroDeposito = db.AlumnosList.Sum(o => o.Deposito);
totalesviewmodel.DineroSap = db.AlumnosList.Sum(o => o.Sap);
totalesviewmodel.MontoCopiasMaestro = db.MaestrosList.Sum(o => o.Copias);
totalesviewmodel.MontoImpresionesMaestro = db.MaestrosList.Sum(o => o.Impresiones);
return View(totalesviewmodel);
}
public ActionResult Reports()
{
List<Alumno> allDatos = new List<Alumno>();
using (BibliotecaEntities dc = new BibliotecaEntities())
{
allDatos = dc.Alumnos.ToList();
}
return View(allDatos);
}
public ActionResult ExportReport()
{
List<Alumno> allDatos = new List<Alumno>();
using (BibliotecaEntities dc = new BibliotecaEntities())
{
allDatos = dc.Alumnos.ToList();
}
ReportDocument rd = new ReportDocument();
rd.Load(Path.Combine(Server.MapPath("~/Reports"), "rpt_datos.rpt"));
rd.SetDataSource(allDatos);
Response.Buffer = false;
Response.ClearContent();
Response.ClearHeaders();
try
{
Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/pdf", "DatoList.pdf");
}
catch (Exception ex)
{
throw;
}
}
public ActionResult Contact ()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
当我尝试下载报告的 PDF 文件时,我的项目停止在:
rd.SetDataSource(allDatos);
出现此错误:
An exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll but was not handled in user code
当我点击继续时,我的浏览器显示:
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
我做错了什么?
那是因为您在功能代码块的 using
范围之外编写此代码:
rd.SetDataSource(allDatos);
尝试将这些代码行写入 using
代码块,或者如果这不是您的问题,您可以删除 using
。
希望对您有所帮助。
天哪,非常感谢,你帮了我大忙!...回答:在代码的最后关闭使用块,如下所示:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Biblioteca.Models;
using CrystalDecisions.CrystalReports.Engine;
namespace Biblioteca.Controllers
{
public class HomeController : Controller
{
private BibliotecaDatabase db = new BibliotecaDatabase();
public ActionResult Index()
{
var totalesviewmodel = new TotalesViewModel();
totalesviewmodel.MontoCopias = db.AlumnosList.Sum(o => o.Copias);
totalesviewmodel.MontoImpresiones = db.AlumnosList.Sum(o => o.Impresiones);
totalesviewmodel.DineroDeposito = db.AlumnosList.Sum(o => o.Deposito);
totalesviewmodel.DineroSap = db.AlumnosList.Sum(o => o.Sap);
totalesviewmodel.MontoCopiasMaestro = db.MaestrosList.Sum(o => o.Copias);
totalesviewmodel.MontoImpresionesMaestro = db.MaestrosList.Sum(o => o.Impresiones);
return View(totalesviewmodel);
}
public ActionResult Reports()
{
List<Alumno> allDatos = new List<Alumno>();
using (BibliotecaEntities dc = new BibliotecaEntities())
{
allDatos = dc.Alumnos.ToList();
}
return View(allDatos);
}
public ActionResult ExportReport()
{
List<Alumno> allDatos = new List<Alumno>();
using (BibliotecaEntities dc = new BibliotecaEntities())
{
allDatos = dc.Alumnos.ToList();
ReportDocument rd = new ReportDocument();
rd.Load(Path.Combine(Server.MapPath("~/Reports"), "rpt_datos.rpt"));
rd.SetDataSource(allDatos);
Response.Buffer = false;
Response.ClearContent();
Response.ClearHeaders();
try
{
Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/pdf", "DatoList.pdf");
}
catch (Exception ex)
{
throw;
}
}
public ActionResult Contact ()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
}