2011-08-12 51 views
0

大家好, 我想動態地在報表中顯示查詢生成的數據。我寫了下面的代碼在頁面加載事件:在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'。


請幫我儘快....

回答

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)); 
相關問題