1

動的データ ソースを使用して Crystal Report を作成しようとしています。レポート ボタンをクリックすると、Crystal レポートが正常に表示されますが、Crystal Report ツールバーの任意のボタン (次のページ、エクスポート先など) をクリックすると、「有効なレポート ソースがありません」というエラー メッセージが表示されます。利用可能です。"

私のC#コードは次のようになります。

private void GenerateReport()
{
    using (DataContext reports = new DataContext())
    {
        var results = //Linq Query;

        ReportDocument pr = new ReportDocument();
        pr.Load(Server.MapPath(@"CrystalReport1.rpt"));
        pr.SetDataSource(results.ToList());

        CrystalReportViewer1.ReportSource = pr;
        CrystalReportViewer1.DataBind();
    }
}

どんな助けでも大歓迎です。ありがとうございます。

4

2 に答える 2

1

だから、私はこれを他の方法で動作させることはできませんでしたが、私はそれを別の方法で動作させることができました。まず、CrystalReportSourceコントロールをaspxページに追加しました。

<CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
   <Report FileName="CrystalReport1.rpt">
  </Report>
</CR:CrystalReportSource>

次に、コードビハインドファイルで、データソースをCrystalReportViewer1に直接設定する代わりに、CrystalReportSourceに設定し、それをCrystalReportViewer1のレポートソースとして設定します。これで、すべてが正常に機能します。

using (DataContext reports = new DataContext())
{
    var results = //Linq Query;
    CrystalReportSource1.ReportDocument.SetDataSource(results.AsEnumerable());

    CrystalReportViewer1.ReportSourceID = "CrystalReportSource1";
    CrystalReportViewer1.RefreshReport();
}
于 2012-07-09T14:41:33.600 に答える
1

CrystalReportViewer Navigate Eventを使用してこの問題を解決しました

[レポートの表示] ボタンで、レポート ドキュメントをセッションに保存しました

  Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
   ' -- the ds is dataset variable containing data to be displayed in the report

    rptDoc.SetDataSource(ds)
    Session.Add("rptdoc", rptDoc)
    CrystalReportViewer1.ReportSource = rptDoc

    End Sub  

次に、CrystalReportViewer の Navigate イベントで、CrystalReportViewer データ ソースをセッションに設定します。

Protected Sub j(ByVal source As Object, ByVal e As CrystalDecisions.Web.NavigateEventArgs) Handles CrystalReportViewer1.Navigate

    rpt.SetDataSource(ds)
    CrystalReportViewer1.ReportSource = session("rptdoc")

End Sub

そのため、レポート内の別のページに移動する前に、CrystalReportViewer データ ソースがセッションで保存されたレポート ドキュメントに設定されます。

于 2016-07-22T12:31:49.603 に答える