返回首页

您好,
我可以使用水晶报表的CrystalReportViewer的一份报告显示。它的工作很好。但是,如果数据很大,需要多页,然后只显示第一页。我怎么能显示所有的页面。这里是我的代码。

注:我使用的是ASP.NET,C#

protected void Page_Load(object sender, EventArgs e)

    {

       

        string ReportName="";

        string Parameter1="";

        ReportName = Session["ReportName"].ToString();

        Parameter1 = Session["Parameter1"].ToString();

          

        ReportDocument rptDoc = new ReportDocument();

        try

        {

                    

 

            

            rptDoc = ShowReport(ReportName, Parameter1);           

            CrystalReportViewer1.ReportSource = rptDoc;

            CrystalReportViewer1.RefreshReport();

            CrystalReportViewer1.Visible = true;

            CrystalReportViewer1.DataBind();

            

   

        }

        catch (Exception ex)

        {  

           

        }

 

        

 

    }

 



    #region Instantiate

 

    private ParameterValues crParameterValues = new ParameterValues();

    private ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();

    private ReportDocument cryRpt = new ReportDocument();

 

    #endregion

 

    #region Declaration

 

    private string ServerName = ConfigurationManager.AppSettings["ServerName"].ToString();

    private string DatabaseName = ConfigurationManager.AppSettings["DatabaseName"].ToString();

    private string UserName = ConfigurationManager.AppSettings["UserName"].ToString();

    private string Password = ConfigurationManager.AppSettings["Password"].ToString();

    private ParameterFieldDefinitions crParameterFieldDefinitions;

    private ParameterFieldDefinition crParameterFieldDefinition;

 

    #endregion  

 



 

    #region DatabaseLogonInfo

    ReportDocument DatabaseLogonInfo()

    {

        ReportDocument cryRpt = new ReportDocument();

        try

        {

 

            //string ServerName = ConfigurationManager.AppSettings["servername"].ToString();

            //string DatabaseName = ConfigurationManager.AppSettings["databasename"].ToString();

            //string UserName = ConfigurationManager.AppSettings["username"].ToString();

            //string Password = ConfigurationManager.AppSettings["password"].ToString();

            cryRpt.SetDatabaseLogon(UserName, Password, ServerName, DatabaseName);

        }

        catch (Exception ex)

        {

            throw ex;

        }

 

        return cryRpt;

 

    }

    #endregion

 

   

 

    #region Execute report For one String type Parametar

    public ReportDocument ShowReport(string ReportName, string Parameter1)

    {

        try

        {

            //cryRpt.Refresh();                 

            cryRpt.Load(ReportName);

            cryRpt.SetDatabaseLogon(UserName, Password, ServerName, DatabaseName);

            crParameterValues.Clear();

            crParameterDiscreteValue.Value = Parameter1;// as like Parameter1

            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;

            crParameterFieldDefinition = crParameterFieldDefinitions["@Parameter1"];

            crParameterValues = crParameterFieldDefinition.CurrentValues;

            crParameterValues.Add(crParameterDiscreteValue);

            crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);

 

        }

        catch (Exception ex)

        {

            throw ex;

            //ShowReport(@"default_report.rpt");

        }

        //CleareParameter();

        return cryRpt;

    }

    #endregion

回答

评论会员:thatraja 时间:2012/02/07
检查这些链接


{A}
{A2}]
评论会员:游客 时间:2012/02/07
RaviRanjankr:如果您的报告可能跨越多个页面,那么你需要的一些细节,如当前页码和当前行的数据,保持每一页的结果,在自己的轨道调用PrintPage事件处理程序。在每一种情况下,创建一个变量以外的事件处理程序代码中存在将使你要记住你的PrintPage呼叫之间的当前位置。永远记住每次打印之前重置这些值,否则将无法启动你的第二次印刷页码为1。重置这些值最好的地方是在PrintDocument的BeginPrint事件。MSDN上的[Pri​​ntDocument.BeginPrint事件][{A3的}参考链接:-{A4纸}]