我可以执行以下操作来生成报告:
public ActionResult Report(string id)
{
LocalReport lr = new LocalReport();
string path = Path.Combine(Server.MapPath("~/Report"), "Person.rdlc");
if (System.IO.File.Exists(path))
{
lr.ReportPath = path;
}
else
{
return View("Index");
}
List<Person> cm = new List<Person>();
var viewModel = new PersonIndexData();
viewModel.People= db.Person
.Include(k => k.Groups)
.OrderBy(k => k.Name);
cm = viewModel.People.ToList();
ReportDataSource rd = new ReportDataSource("PersonDataSet", cm);
lr.DataSources.Add(rd);
string reportType = id;
string mimeType;
string encoding;
string fileNameExtension;
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
renderedBytes = lr.Render(
reportType,
null,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
return File(renderedBytes, mimeType);
}
当我这样调用这个动作时:(mysite/person/report/pdf),我得到了这个异常:
报表处理期间出错。指示此行:
renderedBytes = lr.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
你能告诉我为什么我会在这段代码中得到这个异常吗?它没有给予任何错误,而且这个异常也不是很有解释性。我首先使用EF代码。谢谢。
3条答案
按热度按时间wvyml7n51#
添加TableAdapter后,您是否尝试过这样做?它非常适合我。
qojgxg4l2#
我不知道哪一个对你有帮助,所以我把它们列举如下:
1.尝试从“报表”菜单中删除数据源,然后重新添加
1.在操作之前检查
Render
函数requirements,因此您可能需要检查in
和out
参数值。1.尝试查看
LocalReporter
周围的some examples,以更好地了解如何使用此工具。最后,抛出异常的代码行与主代码不同,因为您放置的是
null
而不是deviceInfo
**!**问候。j0pj023g3#
我的rdlc解决方案基于ReportViewer。
/* 一些逻辑 */
您还需要添加报表路径和数据源(我的解决方案比较复杂,我使用LocalReport_SubreportProcessing)。
在asp.MVC中使用rdlc有一个问题。你需要在ISS应用程序池中设置“身份= LocalSystem”,这在内部网中可以,但在互联网中不可以。