当前位置:编程学习 > C#/ASP.NET >>

水晶报表如何实现证书套打???

    在学习开发WEB系统,正使用到水晶报表,在使用过程中碰到这么种情况想向各位高手请教下: 页面刚载入的时候显示的水晶报表页面里面有很多的内容,但是我点击打印按钮后却不需要将整个页面打印出来,而只打印我需要的字段信息就可以了,也就是要实现套打. 但是我现在如果使用水晶报表10自带的打印功能的话只能实现将整个水晶报表页面打印出来(如果我没有在页面载入时控制不打印字段信息不显示的话).
    现在我想实现水晶报表页面载入显示的是全部信息,也就是提供用户预览,点击打印按钮后我只打印需要的内容,实现套打,这个打印功能我该如何实现,水晶报表自带的打印按钮应该是不可用了,我自己写打印事件的话该如何控制字段信息的显示不显示(后台C#控制)或者控制具体字段的偏移位置等!!! 如果有谁能提供简单范例的那就不盛感谢啊!!!!

--------------------编程问答-------------------- 我是这样做的,在打印事件中,通过循环遍历每个section下的ReportObjects,当判断到它的Kind不等于ReportObjectKind.FieldObject,则把它的ObjectFormat.EnableSuppress设置为false,就不会被打印;打印完成后再把它设置回true --------------------编程问答-------------------- 呵呵~水晶报表下的属性不是太熟`~不知道你有没有简单的范例或者实现代码例子能供我参考下!1网上实在是找不到资料啊 --------------------编程问答-------------------- 实现套打其实都很简单的.首先楼主要在页眉画一个套打的格式,具体怎么就由你定了,然后就传数据集.
下面是一个例子:
1.建一个网面,然后拉一个CrystalReportViewer1控键在窗体,窗体的Page_Load代码如下:

protected void Page_Load(object sender, EventArgs e)
    {
        string connStr =ConfigurationSettings.AppSettings["ConnString1"].ToString();
        SqlDataSource datasource = new SqlDataSource(connStr , "你传进来的SQL语句!");
        ReportDocument doc = new ReportDocument();
        TableLogOnInfo logininfo = new TableLogOnInfo();
        string path;

        path = Server.MapPath("report1.rpt");
        doc.Load(path);
        //强制登陆数据库
        string a, b, c, d;
        a = System.Configuration.ConfigurationManager.AppSettings[0];
        b = System.Configuration.ConfigurationManager.AppSettings[1];
        c = System.Configuration.ConfigurationManager.AppSettings[2];
        d = System.Configuration.ConfigurationManager.AppSettings[3];
        logininfo.ConnectionInfo.ServerName = a;
        logininfo.ConnectionInfo.DatabaseName = b;
        logininfo.ConnectionInfo.UserID = c;
        logininfo.ConnectionInfo.Password = d;
        
        try
        {
            doc.Database.Tables[0].ApplyLogOnInfo(logininfo);
            doc.Database.Tables[0].SetDataSource(datasource.Select(DataSourceSelectArguments.Empty));
            CrystalReportViewer1.ReportSource = doc;
        }
        catch
        {
            Response.Write("<script>alert('输出报表失败,请检查输入信息或网络!');</script>");
        }
    }


上面的代码就可以搞定报表的输出!楼主结贴...给分..哈. --------------------编程问答-------------------- 哈~~要真这么简单就好了,数据绑定我又不是不会,看来楼上的这位没看清楚我的问题啊!!!或者还是我自己想复杂了? --------------------编程问答-------------------- 人怎么一下都没了?顶上去 --------------------编程问答-------------------- 给段代码你参考一下:

        //套打隐藏处理
        public void SetSuppressForPrint(bool EnableSuppress)
        {

            for (int k = 0; k < this.rptReport.Section1.ReportObjects.Count; k++)
            {
                if (this.rptReport.Section1.ReportObjects[k].Kind != ReportObjectKind.FieldObject)
                    this.rptReport.Section1.ReportObjects[k].ObjectFormat.EnableSuppress = EnableSuppress;
            }

        }

在打印事件中:

            SetSuppressForPrint(true);//屏蔽不被打印的非字段标签

            //直接打印
            this.rptReport.PrintToPrinter(1, true, 1, 1);

           SetSuppressForPrint(false);//恢复


字段或标签的属性EnableSuppress 为true时,屏蔽;为false取消屏蔽,上午我说反了。
--------------------编程问答-------------------- lz要干嘛? --------------------编程问答-------------------- 有问题请先GOOGLE,BAIDU --------------------编程问答-------------------- 我也想知道呀,解决了吗 --------------------编程问答-------------------- WEB下票据套打用Grid++是最便捷的解决方案,参考演示:http://www.rubylong.cn/doc/print_bill_index.htm
补充:.NET技术 ,  图表区
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,