• 水晶报表心得


    在翻页、导出、打印等动作的时候,出出现无数据,或者需要重新登陆数据库的提示。
    这是因为这些动作都重新触发了页面,导致我们前一次的操作丢失了。
    既然是状态丢失,那么我们可以用.Net里的session,cache或viewstate来进行保持状态

    这里我用session做一个范例

    一个PUSH模式的报表,带一个参数p1.
    界面上有一个Button,点击后展现报表。然后报表可以进行翻页、打印和导出(这些是工具条实现的,不进行编码实现)而不会出现错误提示。

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //使用Session保持ReportDocument对像
            //每次页面更新时,不再需要重新走数据库
            //注意:如果是VS2008,这段代码要放到Page_Init事件中

            if (Session["myRpt"]!=null) 
            {
             CrystalReportViewer1.ReportSource = (ReportDocument)Session["myRpt"];
            }


        }

       //点击按钮后,报表进行第一次呈现
        protected void Button1_Click(object sender, EventArgs e)
        {
            //连接字串
            String connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:CrZen estall.mdb;";
            OleDbDataAdapter da = new OleDbDataAdapter();
            OleDbConnection cn = new OleDbConnection(connstr);
            //查询
            da = new OleDbDataAdapter("SELECT * From RPT_CR_TEST1", cn);
            DataSet2 dt1 = new DataSet2();
            da.Fill(dt1, "RPT_CR_TEST1");
            ReportDocument myReport = new ReportDocument();
            string reportPath = Server.MapPath("crystalreport1.rpt");
            myReport.Load(reportPath);

            //绑定数据集,注意,一个报表用一个数据集。
            myReport.SetDataSource(dt1.Tables[0]);
            myReport.SetParameterValue("p1","参数测试");
            CrystalReportViewer1.ReportSource = myReport;
            
            //保存到Session
     
            Session["myRpt"]=myReport;
            
        }
       
    }

    之前的代码,我一直是写在Page_load里的,但是这样一是不能解决所有的问题,特别是涉及到有参数传递等情况。
    二是可能会多次请求数据库,导致资源的消耗。

  • 相关阅读:
    Caused by: java.lang.ClassNotFoundException: org.apache.http.message.TokenParser
    Uncaught TypeError: (intermediate value)(intermediate value)(intermediate value)(intermediate value)...is not a function
    Spring学习一(依赖注入/Bean/注解等)
    SpringMVC学习五(resultful风格/异常处理/注解)
    SpringMVC学习四(文件上传/拦截器)
    SpringMVC学习三(静态资源/AJAX功能/乱码问题)
    springboot整合websocket
    springboot整合成c3p0
    Dubbo相关
    Cestos秒装jdk
  • 原文地址:https://www.cnblogs.com/likeyou/p/3169503.html
Copyright © 2020-2023  润新知