在asp.net中通过报表查看器显示动态数据

时间:2011-08-12 14:34:49

标签: asp.net reportviewer

大家好, 我想动态地在报表中显示查询生成的数据。我在页面加载事件中编写了以下代码:


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'。


请尽快帮助我......

1 个答案:

答案 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));