データをセッションにロードして、Crystal Report Viewerで次のボタンがクリックされたときに、データベースからデータを再度取得する代わりに、データテーブルからデータをロードするようにします。これが私のコードです...
ReportDocument rpt = new ReportDocument();
DataTable resultSet = new DataTable();
string reportpath = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.QueryString.Get("id") == "5")
{
string publication = Request.QueryString.Get("pub");
DateTime date = DateTime.Parse(Request.QueryString.Get("date"));
int pages = int.Parse(Request.QueryString.Get("pages"));
int sort = int.Parse(Request.QueryString.Get("sort"));
if (sort == 0)
{
reportpath = Server.MapPath("IssuesReport.rpt");
rpt.Load(reportpath);
DataTable resultSet1 = RetrievalProcedures.IssuesReport(date, publication, pages);
Session["Record"] = resultSet1;
}
DataTable report = (DataTable)Session["Record"];
rpt.SetDataSource(report);
CrystalReportViewer1.ReportSource = rpt;
私はこのコードを試していますが、次のボタンをクリックすると、無効なレポートソースというエラーが表示されます。セッションがnullであると推測されるため、このエラーが発生します。
どんな推測でも、どうすればこれを解決できますか...