0

ストアド プロシージャを使用して、データ セットを使用して rdlc レポートをバインドしました。データ セット (.xsd) の代わりに、操作されたデータ テーブルを rdlc レポートにバインドできますか。

4

2 に答える 2

5

ASPX の reportViewer

<rsweb:ReportViewer ID="ReportViewer1" runat="server" SizeToReportContent="True">
</rsweb:ReportViewer>

データセットの取得方法

private DataTable GetSPResult()
{
    DataTable ResultsTable = new DataTable();

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);

    try
    {
        SqlCommand cmd = new SqlCommand("yourStorePorcedure", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@id", 1);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        adapter.Fill(ResultsTable);
    }

    catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }
    finally
    {
        if (conn != null)
        {
            conn.Close();
        }
    }

    return ResultsTable;
}

結果を reportviewer にバインドする

DataTable dt = GetSPResult();
ReportViewer1.Visible = true;
ReportViewer1.LocalReport.ReportPath = "Report1.rdlc";
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));

プロジェクトに DataSet を追加し、テーブルアダプターを追加します。

ここに画像の説明を入力

ウィザードを進め、ストア プロシージャを使用してエンティティを作成します。

次に、DataSet ファイルが rdlc に追加されていることを確認します

ここに画像の説明を入力

ここで、フィールドを設計して追加する必要があります。そうしないと、空白になります

于 2013-08-05T16:32:44.133 に答える
4

はい、レポートするデータソースとして操作されたデータテーブルを使用できますが、フィールド名は同じである必要があります。

DataTable   dtReportData="yourdata source"

YourReportViewer.LocalReport.DataSources.Clear();
ReportDataSource RDS1 = new ReportDataSource("SampleReport", dtReportData);
YourReportViewer.ProcessingMode = ProcessingMode.Local;
YourReportViewer.LocalReport.EnableExternalImages = true;
YourReportViewer.LocalReport.ReportEmbeddedResource = "Your Report Path";
YourReportViewer.LocalReport.DataSources.Add(RDS1);
于 2013-08-05T13:04:58.090 に答える