大家好, 我想动态地在报表中显示查询生成的数据。我在页面加载事件中编写了以下代码:
protected void Page_Load(object sender, EventArgs e)
{
string sqlQuery = "select * from Login";
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RosterConnectionString"].ConnectionString);
SqlDataAdapter da = new SqlDataAdapter(sqlQuery, con);
DataTable dt = new DataTable();
da.Fill(dt);
ReportDataSource rds1 = new ReportDataSource("Reports_Login", dt);
DReportViewer.Reset();
DReportViewer.LocalReport.ReportPath = Server.MapPath("MyReport.rdlc");
DReportViewer.LocalReport.DataSources.Clear();
DReportViewer.LocalReport.DataSources.Add(rds1);
DReportViewer.DataBind();
DReportViewer.LocalReport.Refresh();
}
以下代码用aspx文件编写:
<form id="form1" runat="server">
<div>
<rsweb:ReportViewer ID="DReportViewer" runat="server">
</rsweb:ReportViewer>
</div>
</form>
但是当我运行该页面时,它会显示错误
尚未为数据源提供数据源实例 'Login_Login'。
请尽快帮助我......
答案 0 :(得分:0)
这意味着您的报告中名为“Login_Login”的数据源尚未设置为实例。'
您的报告中只有一个数据源吗?如果是这样,请尝试将ReportDataSource的名称更改为“Login_Login”,如下所示
ReportDataSource rds1 = new ReportDataSource("Login_Login", dt);
您为实例提供的名称必须与您在报告中定义的数据源的名称相匹配
如果您的报告中有多个数据源,请向所有数据源添加实例。就像我在这个例子中所做的那样
LocalReport report = new LocalReport();
report.DataSources.Add(new ReportDataSource("Login_Login", (DataTable)ds.LoginTable));
report.DataSources.Add(new ReportDataSource("Report_Login", (DataTable)ds.ReportLoginTable));
report.DataSources.Add(new ReportDataSource("Report_Another_One", (DataTable)ds.AnotherTable));