مقداردهی شیء Text خارج از گزارش (در زمان کدنویسی)

شما می توانید در زمان کدنویسی مقدار اشیا Text موجود در گزارش را تعیین کنید برای این کار ابتدا فضای نامی زیر را به فرم کلاس اضافه نمایید ، این فضای نام شامل کلاس های Crystal Report می باشند از جمله کلاس شی Text :

using CrystalDecisions.CrystalReports.Engine;

سپس می توانید از شکل کلی زیر برای مقدار دهی آن استفاده نمایید :

Report1 report = new Report1();

TextObject textObject = (TextObject)report.ReportDefinition.ReportObjects[“ موجود در گزارشText نام شی”];
textObject.Text = “مقدار آن”;

report.SetDataSource(this.ReturnDatasource());
this.crystalReportViewer1.ReportSource = report;

در کد های بالا ابتدا شی Text موجود در گزارش را بدست آورده و با استفاده از خاصیت Value آن ، مقدار آن را در زمان اجرای گزارش تعیین می کنیم . در کد بالا Report1 کلاس گزارش می باشد .

مثال) در این مثال قصد داریم که زمان فعلی سیستم را به صورت شمسی در گزارش نمایش دهیم ، برای این کار مراحل زیر را به ترتیب طی نمایید :

مرحله 1 ) ایجاد شی Text

بر روی گزارش دوبار کلیک کرده و در یک قسمت خالی از آن کلیک راست کرده و از منوی Insert گزینه ی TextObject را انتخاب نمایید ، سپس آن را در قسمت Report Header قرار دهید :
change-Text-Vlue-in-Runtime-CrystalReport (1)

نام آن را به date تغییر دهید :
change-Text-Vlue-in-Runtime-CrystalReport (2)

مرحله 2 ) مقدار دهی شی date خارج از گزارش

در رویداد Load فرم کد های زیر را قرار دهید :

System.Globalization.PersianCalendar persiancalendar = new System.Globalization.PersianCalendar();
StringBuilder shamsi_date = new StringBuilder();
shamsi_date.Append(persiancalendar.GetYear(DateTime.Now).ToString() + "/");
shamsi_date.Append(persiancalendar.GetMonth(DateTime.Now).ToString() + "/");
shamsi_date.Append(persiancalendar.GetDayOfMonth(DateTime.Now));

//ایجاد شی از کلاس گزارش
Report1 report = new Report1();
//بدست آوردن شی Text
TextObject textObject = (TextObject)report.ReportDefinition.ReportObjects["date"];
//مقدار دهی
textObject.Text = shamsi_date.ToString();

report.SetDataSource(this.ReturnDatasource());
this.crystalReportViewer1.ReportSource = report;

با توجه به کد های بالا مشخص است که یک شی text در گزارش به نام date وجود دارد که تاریخ فعلی سیستم به صورت شمسی را در آن قرار داده ایم .
change-Text-Vlue-in-Runtime-CrystalReport (3)