private Top _top; //�򵥵�һ�����д�ӡ��ʽ,��һ�о���,�����о���,�м��о���

        #endregion Fields

        #region Constructors

        //�����Խ��˳�����΢�޸�,��һ���������,��̬���ش�ӡ����,�γ�����������������,��ӡ���⸴�ӵ�����
        public MisPrinter()
        {
            mCurrentPageIndex = 1;
            _rowsPerPage = 0;
            mCurrentRowIndex = 0;
            mCurrentRowIndexForFooter = 0;
            _isSewingLine = false;
            _isPrinterMargins = false;
            _isSubTotalPerPage = false;
            _subTotalCol = "";

            _sewing = new Sewing(0,SewingDirectionFlag.Left);
            mPrintDocument = new PrintDocument();
            _body = new Body();			//��Ҫ��������ʵ����
            _gridBorder = GridBorderFlag.Double;
        }
        //还可以将此程序稍微修改,用一个集体管理,动态加载打印对象,形成任意多个网格的组合体,打印任意复杂的网格



        public MisGoldPrinterOfReWrite(bool p_IsLandscape, PrinterMargins printerMargins)
        {
            PrinterSingleton.Reset();

            mCurrentPageIndex = 1;
            mCurrentRowIndex  = 0;

            //单一模式,全部打印对象使用下面相同的对象,提高打印速度效率
            mPrintDocument = PrinterSingleton.PrintDocument;

            mPrintDocument.DefaultPageSettings.Landscape = p_IsLandscape;

            mPrinterMargins = PrinterSingleton.PrinterMargins;


            //   mPrintDocument.DocumentName = "MIS金质打印通,欢迎使用!";


            _sewing = new Sewing(30, SewingDirectionFlag.Left);

            mPrinter = new Printer();
            _body    = new Body();      //主要对象,所以实例化
        }
        public void Print(bool print)
        {
            string[] leader = getLeaders();
            XmlDocument doc = new XmlDocument();
            doc.Load(Application.StartupPath.ToString() + "\\leader.xml");
            string TableName = string.Empty;
            string s = string.Empty;
            string kuozhan = string.Empty;
            try
            {
                s = doc.SelectSingleNode("Config/Table").InnerText.ToString();
                TableName = doc.SelectSingleNode("Config/TableName").InnerText.ToString();
                kuozhan = doc.SelectSingleNode("Config/Kuozhan").InnerText.ToString();
            }
            catch
            {
                s = "";
                TableName = "";
                kuozhan = "";
            }
            MisPrinter webmis = new MisPrinter();

            webmis.GridBorder = GoldPrinter.GridBorderFlag.SingleBold;

            Title title = new Title();
            //title.Text = "平煤股份六矿人员定位系统综合日报表 "
            webmis.Title = null;

            webmis.Caption = TableName;

            webmis.Top = kuozhan + "|统计时间:" + label1.Text + "|" + s;

            webmis.Header = null;

            //MultiHeader multiHeader = new MultiHeader(1, 6);
            //multiHeader.SetText(0, 0, "部门");
            //multiHeader.SetText(0, 1, "零点班");
            //multiHeader.SetText(0, 2, "八点班");
            //multiHeader.SetText(0, 3, "四点班");
            //multiHeader.SetText(0, 4, "合计");
            //multiHeader.SetText(0, 5, "备注");

            //webmis.MultiHeader = multiHeader;

            Body body = new Body();
            body.ColsAlignString = "LCCCCC";
            body.DataSource = GetDataTable();

            int mcols = 6;

            webmis.Body = body;
            webmis.IsSubTotalPerPage = false;				//这是打印本页小计
            webmis.SubTotalCol = (mcols - 2).ToString() + ";" + (mcols - 1).ToString();		//用分号分隔的要求小计的列
            if (leader != null && leader.Length - 1 > 0)
            {
                Footer footer = new Footer(1, leader.Length - 1);
                for (int l = 0; l < leader.Length - 1; l++)
                {
                    footer.SetText(0, l, leader[l].ToString() + ":");
                }
                footer.IsDrawAllPage = false;
                webmis.Footer = footer;
            }
            else
            {
                webmis.Footer = null;
            }
            DayReport.Bottom bottom = new Bottom();		//Top/Bottom的另一种方式
            bottom.Text = "";
            webmis.Bottom = bottom;

            //将注释去掉试试看
            Sewing sewing = new Sewing(20, SewingDirectionFlag.Left);
            webmis.Sewing = sewing;
            webmis.IsSewingLine = false;			//打印装订线

            webmis.IsSubTotalPerPage = false;	//每页加小计

            //webmis.PageSetup();
            if (print)
            {
                webmis.Print();
            }
            else
            {
                webmis.Preview();
            }

            webmis.Dispose();
            webmis = null;
        }