3

フォームで ReportViewer コントロールを使用します。

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <rsweb:ReportViewer ID="ReportViewer1" runat="server">
    </rsweb:ReportViewer>
</form>

ページ コード ファイルで初期化されたレポート ファイル パス:

protected void Page_Init(object sender, EventArgs e)
{
    ReportViewer1.LocalReport.ReportPath = "Reports/Source/Untitled.rdlc";
}

レポートがレンダリングされると、次のエラーが発生しました。

A data source instance has not been supplied for the data source 'DataSet1'.

接続は正常に動作し (テスト済み)、MS SQL Server Report Builder でレポートを実行しようとすると、正常に動作します (レポートが生成されました)。

4

1 に答える 1

5

rdlcレポートには、レポートの設計時に追加した「DataSet1」というデータセットがあります。このデータセットがレポートのレンダリングに使用するデータを渡す必要があります。

これは、localreportデータソースコレクションを介して行われます。複数形であることに注意してください。これは、レポートに複数のデータセットを含めることができることを意味します。

ReportViewer1.LocalReport.DataSources.Clear();

ReportDataSource rds = new ReportDataSource();
rds.Name = "DataSet1";  //this is the name of the DataSet on your report rdlc
rds.Value = datatable; //this contains the data and columns referenced in the dataset

ReportViewer1.LocalReport.DataSources.Add(rds);

以下のタグを見ると、レポートビューアが期待するものがわかります

<rsweb:ReportViewer ID="ReportViewer1" runat="server">
<LocalReport ReportPath="Report1.rdlc">
    <DataSources>
        <rsweb:ReportDataSource Name="DataSet1" />
    </DataSources>
</LocalReport>
</rsweb:ReportViewer>

アップデート

2番目の部分では、データソースDataSet11はすでに宣言されています。データを渡す背後のコードでそれを参照するだけです。Value

ReportViewer1.LocalReport.DataSources["DataSet1"].Value = myData;
于 2012-06-20T13:10:04.330 に答える