尚未为数据源“请求”提供数据源实例

我在我的reportviewer上收到一个错误,我不知道如何纠正这个错误….我得到的错误是:“没有为数据源’Request’提供数据源实例。” 我试过寻找这个,但找不到任何我能看到的错误,有人可以指点我正确的方向吗? 这就是我的reportvierer的样子:

   

这是我用于reportviewer的代码:

  SqlConnection conn; protected void Page_Load(object sender, EventArgs e) { conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); conn.Open(); if (!Page.IsPostBack) { runRptViewer(); } } private DataTable getData() { DataSet dss = new DataSet(); string sql = ""; sql = "SELECT CC_Request.Company, CC_Request.Attention, CC_Request.Telephone, CC_Request.Email, CC_Items.Model, CC_Items.SerialNo, CC_ItemsRequested.Item, CC_ItemsRequested.Quantity, CC_ItemsRequested.Price, CC_ItemsRequested.ModelID, CC_Items.RequestID FROM CC_Request INNER JOIN CC_Items ON CC_Request.RequestID = CC_Items.RequestID INNER JOIN CC_ItemsRequested ON CC_Items.ModelID = CC_ItemsRequested.ModelID WHERE (CC_Request.Company = 'Alpha') AND (CC_ItemsRequested.ModelID = 20) AND (CC_Items.RequestID = 1)"; SqlDataAdapter da = new SqlDataAdapter(sql, conn); da.Fill(dss); DataTable dt = dss.Tables[0]; return dt; } private void runRptViewer() { this.rptViewer.Reset(); this.rptViewer.LocalReport.ReportPath = Server.MapPath("Reports\\Report.rdlc"); ReportDataSource rds = new ReportDataSource("dsNewDataSet_Table", getData()); this.rptViewer.LocalReport.DataSources.Clear(); this.rptViewer.LocalReport.DataSources.Add(rds); this.rptViewer.DataBind(); this.rptViewer.LocalReport.Refresh(); } 

任何帮助将不胜感激。

编辑 – – – – – – – – – – – –

这也不起作用:

  private DataTable getData() { DataTable dtable = new DataTable(); dtable.TableName = "dtNewDataSet_Table"; string sql = ""; sql = "SELECT CC_Request.Company, CC_Request.Attention, CC_Request.Telephone, CC_Request.Email, CC_Items.Model, CC_Items.SerialNo, CC_ItemsRequested.Item, CC_ItemsRequested.Quantity, CC_ItemsRequested.Price, CC_ItemsRequested.ModelID, CC_Items.RequestID FROM CC_Request INNER JOIN CC_Items ON CC_Request.RequestID = CC_Items.RequestID INNER JOIN CC_ItemsRequested ON CC_Items.ModelID = CC_ItemsRequested.ModelID WHERE (CC_Request.Company = 'Alpha') AND (CC_ItemsRequested.ModelID = 20) AND (CC_Items.RequestID = 1)"; SqlDataAdapter da = new SqlDataAdapter(sql, conn); da.Fill(dtable); DataTable dt = dtable; return dt; } 

我也面临这个问题,这就是我来到这里的原因。

我找出了问题,我在这里发帖,以帮助一些人遇到这类问题。

  1. 我的RDLC数据源是“dsClientPayList”
  2. 我在后面的代码中添加了数据源,如:

     ReportViewer1.LocalReport.DataSources.Clear(); ReportDataSource rd = new ReportDataSource("dsData1", DAL.MyDBModel.snData().Tables[0]); ReportViewer1.LocalReport.DataSources.Add(rd); 

并且它抛出同样的错误。

解:

在我的代码后面,我将ReportDataSource的参数从“ dsData1 ”更改为“ dsClientPayList ”(与RDLC中相同)。

 ReportDataSource rd = new ReportDataSource("dsClientPayList", DAL.MyDBModel.snData().Tables[0]); 

它有效

结论: RDLC和ReportViewer中的DataSource名称必须相同。

谢谢快乐编码:)

您必须设置在报告中使用的所有数据源。

在这种情况下,如果只有一个数据源,它应该是这样的

 ReportDataSource rds = new ReportDataSource("Request", getData()); 

我宁愿用“using”语句来做正确的对象处理和error handling

 using (SqlConnection conn = new SqlConnection(connStr)) { using(SqlCommand comm = new SqlCommand()) { comm.Connection = conn; comm.CommandText = sql; 

 try { conn.Open(); comm.ExecuteNonQuery(); } catch(SqlException e) { // in case something is wrong } } }