Ejemplo n.º 1
0
        private void btnPrint_Click(object sender, EventArgs e)
        {
            if (radGridView.Rows.Count == 0)
            {
                return;
            }
            try
            {
                this.Cursor = Cursors.WaitCursor;
                Njit.Program.FastReportExtensions.Forms.PrintPreview form = new Njit.Program.FastReportExtensions.Forms.PrintPreview(Setting.Program.ThisProgram.GetReportPath("Report.frx"), Njit.Program.FastReportExtensions.Forms.PrintPreview.PrintSizes.A4, null, 1);
                form.ReportDocument.SetParameterValue("CompanyName", Setting.Archive.ThisProgram.LoadedArchiveSettings.OrganName);
                form.ReportDocument.SetParameterValue("ReportPrintDate", Njit.Common.PersianCalendar.GetDate(DateTime.Now));
                form.ReportDocument.SetParameterValue("ReportPrintTime", Njit.Common.PersianCalendar.GetTime());
                Njit.Program.Forms.GetValue f = new Njit.Program.Forms.GetValue("دریافت عنوان", "عنوان گزارش را وارد کنید:");
                if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    form.ReportDocument.SetParameterValue("Title", f.Value);
                }
                FastReport.ReportPage page     = form.ReportDocument.Pages[0] as FastReport.ReportPage;
                FastReport.DataBand   databand = page.Bands[0] as FastReport.DataBand;
                float width = databand.Width;
                foreach (var item in radGridView.Columns)
                {
                    FastReport.TextObject bandText = new FastReport.TextObject();
                    bandText.CreateUniqueName();
                    bandText.HorzAlign = FastReport.HorzAlign.Center;
                    int currentWidth = item.Width;
                    bandText.Bounds       = new RectangleF(width - currentWidth, 0.0f, currentWidth, databand.Height);
                    bandText.Border.Lines = FastReport.BorderLines.All;
                    //bandText.AutoWidth = true;
                    bandText.RightToLeft = true;
                    bandText.Font        = new System.Drawing.Font("B Nazanin", 9);
                    bandText.Text        = "[ReportData." + item.Name + "]";
                    databand.AddChild(bandText);
                    width -= item.Width;// bandText.CalcWidth();
                }

                //databand.AfterLayout += databand_AfterLayout;
                DataTable dt = (radGridView.DataSource as DataTable).Clone();
                dt.Rows.InsertAt(dt.NewRow(), 0);
                GetColumnsHeaders(dt.Rows[0]);
                foreach (DataRow row in (radGridView.DataSource as DataTable).Rows)
                {
                    dt.Rows.Add(row.ItemArray);
                }
                form.ReportDocument.RegisterData(dt, "ReportData");
                form.ReportDocument.GetDataSource("ReportData").Enabled = true;
                databand.DataSource = form.ReportDocument.GetDataSource("ReportData");
                form.ShowDialog(this);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }