3

reportviewer でエラーが表示されますが、これを修正する方法がわかりません.. エラーは次のとおりです。これを検索してみましたが、間違っていることがわかりません。誰かが私を正しい方向に向けてもらえますか? これは私のreportviererがどのように見えるかです:

    <rsweb:ReportViewer ID="rptViewer" runat="server" Height="654px" 
Width="924px" Font-Names="Verdana" Font-Size="8pt" 
    InteractiveDeviceInfos="(Collection)" WaitMessageFont-Names="Verdana" 
    WaitMessageFont-Size="14pt">
    <LocalReport ReportPath="Report.rdlc">
    </LocalReport>

これは、レポートビューアに使用するコードです。

    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;
}
4

3 に答える 3

8

私もこの問題に直面していたので、ここに来ました。

私は問題を把握し、この種の問題を抱えている人を助けるためにここに投稿しています。

  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]);

そして、それは動作します

結論: DataSource 名は、RDLC と ReportViewer の両方で同じでなければなりません。

ありがとうハッピーコーディング:)

于 2013-11-23T07:40:41.497 に答える