我正在尝试在我的MVC项目中显示rdlc报告。我创建了2个addtional文件夹:
- 一个用于我的数据集
- 一个包含我的rdlc
报告文件和我的网络表单aspx
文件。以下是我对webform的Page_Load
事件的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<Models.goodcustomers> goodcustomers= null;
using (var dc = new MaDbContext())
{
goodcustomers= dc.goodcustomers.ToList();
ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/RPTReports/goodcustomers.rdlc");
ReportViewer1.LocalReport.DataSources.Clear();
ReportDataSource rdc = new ReportDataSource("MyDataset", goodcustomers);
ReportViewer1.LocalReport.DataSources.Add(rdc);
ReportViewer1.LocalReport.Refresh();
}
}
}
网络代码
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" AsyncRendering="false" SizeToReportContent="true">
</rsweb:ReportViewer>
</div>
</form>
</body>
这不起作用....当页面打开时,它会打印List<Models.goodcustomers>
中所有项目的单元格,但这些单元格是空白的。
显然,当我调试时,我看到所有内容都是从数据库中检索出来的。所以我想这不是数据库连接问题
goodcustomers
是我的数据库中的一个视图,我在我的MVC应用程序中创建了一个Model,我首先使用DbContext代码来查询数据库
知道发生了什么事吗?
ps:在我的MVC应用程序中显示Webform我只使用<a>
标记,href指向aspx
文件的位置
答案 0 :(得分:1)
我在网站上找到了解决方案。这里应该做三件事:
1:将goodcustomers
转换为DataTable
。然后将DataTable
作为参数传递到ReportDataSource rdc = new ReportDataSource("MyDataset", goodcustomers_converted_to_DataTable);
2: BIND 数据。在ReportViewer1.DataBind();
实例化
rdc
3:第2步应该纠正这个问题。现在,您想要在MVC cshtml视图中替换webform,使用<iFrame>
,src指向aspx webform。
按照这3个步骤解决了我的问题。