Динамическое отображение данных через средство просмотра отчетов в asp.net

Привет всем! Я хочу отображать данные, сгенерированные запросом, в отчете динамически. Я написал следующий код в событии загрузки страницы:


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».


Пожалуйста, помогите мне как можно скорее....


person Tejas    schedule 12.08.2011    source источник


Ответы (1)


Это означает, что источник данных в вашем отчете под названием «Логин_Логин» не был установлен в качестве экземпляра.'

У вас есть только один источник данных в вашем отчете? Если это так, попробуйте изменить имя вашего 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));
person Martin    schedule 12.08.2011