基本信息
源码名称:c# fastreport PrintDialog 修改打印机设置,弹出打印机设置
源码大小:18.68M
文件格式:.rar
开发语言:C#
更新时间:2020-08-07
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 20 元 
   源码介绍

c# fastreport printdiag 修改打印机设置,弹出打印机设置

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FastReport;
using System.Data;
using System.Windows.Forms;
using System.IO;

namespace FastReportTestCode
{
    public class FastReportHelper
    {

        public enum EnumFastPrintMode
        {
            /// <summary>
            /// 直接打印
            /// </summary>
            Print = 1,
            /// <summary>
            /// PrintPreivew
            /// </summary>
            PrintPreivew = 2,
            /// <summary>
            /// 设计模式
            /// </summary>
            Design = 3,
        }
        public void Print(string printTemplateName, DataSet dataSet, string printerName,int flag,string path)
        {
            //Loving.Print.PrintHelper.PrintRdlc("", Environment.CurrentDirectory "\\Report/rep_RCKQD", true, dataSet);
            //var str = "";
            //var filePath = Environment.CurrentDirectory "\\Report\\" printTemplateName;//获取打印模板位置
            var filePath = path "\\Report\\" printTemplateName;//获取打印模板位置
            Report report = new Report();//创建FastReport实例
            //report.Preview=
            report.RegisterData(dataSet);//注册数据源
            foreach (DataTable dataTable in dataSet.Tables)
            {
                report.GetDataSource(dataTable.TableName).Enabled = true;//设置手动为true,false时设计器中看不到数据对象
            }
            if (!System.IO.File.Exists(filePath))//检查模板是否存在
            {
                //MessageBox.Show("不存在当前打印模板:" printTemplateName Environment.NewLine "现在进入设计模式");
                report.Design();//设计模式,可新建模板
                return;
            }
            report.Load(filePath);//打开报表
            if (!string.IsNullOrEmpty(printerName))
                report.PrintSettings.Printer = printerName;//设置打印机名字

            report.PrintSettings.ShowDialog = true;
            var mode = (EnumFastPrintMode)flag;//打印模式,  print:直接打印  PrintPreivew:预览    Design:设计模式
            switch (mode)
            {
                case EnumFastPrintMode.Print:
                    report.Print();
                    break;
                case EnumFastPrintMode.PrintPreivew:
                    report.RegisterData(dataSet, "NorthWind");
                    report.Show();
                    break;
                case EnumFastPrintMode.Design:
                    report.Design();
                    break;
                default:
                    report.Show();
                    break;
            }
        }
        public void Print(string printTemplateName, DataSet dataSet, string printerName, int flag, string path, string strGys, string strShrq, string strFph, string strTzr, string strShr)
        {
            //Loving.Print.PrintHelper.PrintRdlc("", Environment.CurrentDirectory "\\Report/rep_RCKQD", true, dataSet);
            //var str = "";
            //var filePath = Environment.CurrentDirectory "\\Report\\" printTemplateName;//获取打印模板位置
            var filePath = path "\\Report\\" printTemplateName;//获取打印模板位置
            Report report = new Report();//创建FastReport实例
            //report.Preview=
            dataSet.Tables[0].TableName = "WGRK";
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            dt = dataSet.Tables[0].Clone();
            foreach (DataColumn col in dt.Columns)
            {
                if (col.ColumnName == "数量")
                {
                    //修改列类型
                    col.DataType = typeof(Int32);
                }
                if (col.ColumnName == "成本金额" || col.ColumnName == "售价金额")
                {
                    //修改列类型
                    col.DataType = typeof(double);
                }
            }
            foreach (DataRow dr in dataSet.Tables[0].Rows)
            {
                DataRow drnew = dt.NewRow();
                drnew = dr;
                dt.Rows.Add(drnew.ItemArray);
            }
            ds.Tables.Add(dt);
            dataSet = ds;

            DataTable dtTt = new DataTable();
            dtTt.TableName = "ttxx";
            dtTt.Columns.Add("gys");
            dtTt.Columns.Add("shrq");
            dtTt.Columns.Add("dh");
            dtTt.Columns.Add("bgy");
            dtTt.Columns.Add("fh");
            DataRow drTt = dtTt.NewRow(); ;
            drTt["gys"] = strGys;
            drTt["shrq"] = Convert.ToDateTime(strShrq).ToString("yyyy-MM-dd");
            drTt["dh"] = strFph;
            drTt["bgy"] = strTzr;
            drTt["fh"] = strShr;
            dtTt.Rows.Add(drTt);
            dataSet.Tables.Add(dtTt);
            report.RegisterData(dataSet);//注册数据源
            //foreach (DataTable dataTable in dataSet.Tables)
            //{
            //    report.GetDataSource(dataTable.TableName).Enabled = true;//设置手动为true,false时设计器中看不到数据对象
            //}
            if (!System.IO.File.Exists(filePath))//检查模板是否存在
            {
                //MessageBox.Show("不存在当前打印模板:" printTemplateName Environment.NewLine "现在进入设计模式");
                report.Design();//设计模式,可新建模板
                return;
            }
            report.Load(filePath);//打开报表
            if (!string.IsNullOrEmpty(printerName))
                report.PrintSettings.Printer = printerName;//设置打印机名字
            report.PrintSettings.ShowDialog = false;
            var mode = (EnumFastPrintMode)flag;//打印模式,  print:直接打印  PrintPreivew:预览    Design:设计模式
            switch (mode)
            {
                case EnumFastPrintMode.Print:
                    report.Print();
                    break;
                case EnumFastPrintMode.PrintPreivew:
                    report.RegisterData(dataSet);
                    report.Show();
                    break;
                case EnumFastPrintMode.Design:
                    report.Design();
                    break;
                default:
                    report.Show();
                    break;
            }
        }

        //add by zengyan 20180807 新增修改表列的数据类型
        public static DataTable UpdateColumnType(DataTable dataSource, Dictionary<string, Type> dic_ColType)
        {
            DataTable dt_Tmp = dataSource.Clone();
            foreach (DataColumn col in dt_Tmp.Columns)
            {
                if (dic_ColType.ContainsKey(col.ColumnName))
                {
                    //修改列类型
                    col.DataType = dic_ColType[col.ColumnName];
                }
            }
            //foreach (DataRow dr_Tmp in dataSource.Rows)
            //{

            //    decimal d = decimal.Round(decimal.Parse("0.55555"), 4);
            //    dt_Tmp.Rows.Add(dr_Tmp.ItemArray);
            //}
            for(int i=0;i<dataSource.Rows.Count;i )
            {
                //decimal da = decimal.Round(decimal.Parse(dataSource.Rows[i]["数量"].ToString()), 4);
                dt_Tmp.Rows.Add(dataSource.Rows[i].ItemArray);
               // dt_Tmp.Rows[i]["数量"] = da;
               
            }
            foreach (DataColumn col in dt_Tmp.Columns)
            {
                if (dic_ColType.ContainsKey(col.ColumnName))
                {
                    //修改列类型
                    col.DataType = dic_ColType[col.ColumnName];
                }
            }
            return dt_Tmp;
        }

        //add by zengyan 20180807 新增打印报表通用方法
        public static void Print(string fileName, DataTable dataSource, string printerName, Dictionary<string, object> dic_Param, int printMode)
        {
            DataSet ds_DataSource = new DataSet();
            ds_DataSource.Tables.Add(dataSource.Copy());
            Print(fileName, ds_DataSource, printerName, dic_Param, printMode);
        }

        //add by zengyan 20180807 新增打印报表通用方法
        public static void Print(string fileName, DataSet dataSource, string printerName, Dictionary<string, object> dic_Param, int printMode)
        {
            try
            {
                string strPath = Application.StartupPath.ToString();
                var filePath = strPath "\\Report\\" fileName;
                Report report = new Report();
                report.Load(filePath);
                for (int i_Index = 0; i_Index < dataSource.Tables.Count; i_Index )
                {
                    if (string.IsNullOrEmpty(dataSource.Tables[i_Index].TableName))
                    {
                        dataSource.Tables[i_Index].TableName = "DataTable" i_Index.ToString();
                    }
                }

                report.RegisterData(dataSource);//注册数据源
                foreach (DataTable dataTable in dataSource.Tables)
                {
                    report.GetDataSource(dataTable.TableName).Enabled = true;//设置手动为true,false时设计器中看不到数据对象
                }

                foreach (KeyValuePair<string, object> param in dic_Param)
                {
                    report.SetParameterValue(param.Key, param.Value);
                }
                if (!System.IO.File.Exists(filePath))//检查模板是否存在
                {
                    report.Design();//设计模式,可新建模板
                    return;
                }
                if (!string.IsNullOrEmpty(printerName))
                    report.PrintSettings.Printer = printerName;//设置打印机名字
                report.PrintSettings.ShowDialog = true;
                var mode = (EnumFastPrintMode)printMode;
                switch (mode)
                {
                    case EnumFastPrintMode.Print:
                        report.Print();
                        break;
                    case EnumFastPrintMode.PrintPreivew:
                        report.RegisterData(dataSource);
                        report.Show();
                        break;
                    case EnumFastPrintMode.Design:
                        report.Design();
                        break;
                    default:
                        report.Show();
                        break;
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show("ex:" exception.ToString());
                throw;
            }
        }

    }
}