何時(shí)是使用代碼報(bào)表的最佳方法,何時(shí)采用frx格式
您可能知道,不僅可以在特殊的設(shè)計(jì)器中創(chuàng)建FastReport.Net中的報(bào)表,還可以從用戶應(yīng)用程序的代碼中創(chuàng)建報(bào)表。同時(shí),您將獲得一類報(bào)表,而不是帶有frx擴(kuò)展名的常規(guī)文件。可以將其轉(zhuǎn)換為庫,并在不同的項(xiàng)目中使用。創(chuàng)建此類報(bào)表的方式是什么?
看一下這段代碼:
//Create instance of class Report Report report = new Report(); //load data DataSet ds = new DataSet(); ds.ReadXml(AppFolder + "\\nwind.xml"); //Register data source report.RegisterData(ds); //Enable data table report.GetDataSource("Products").Enabled = true; //Add report page ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName(); //Create GroupHeader band GroupHeaderBand group = new GroupHeaderBand(); page.Bands.Add(group); group.CreateUniqueName(); group.Height = Units.Centimeters * 1; group.Condition = "[Products.ProductName].Substring(0,1)"; group.SortOrder = FastReport.SortOrder.Ascending; // create group text TextObject groupTxt = new TextObject(); groupTxt.Parent = group; groupTxt.CreateUniqueName(); groupTxt.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1); groupTxt.Text = "[[Products.ProductName].Substring(0,1)]"; groupTxt.Font = new Font("Arial", 14, FontStyle.Bold); groupTxt.VertAlign = VertAlign.Center; groupTxt.Fill = new LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5f, 1); // create data band DataBand data = new DataBand(); group.Data = data; data.CreateUniqueName(); data.DataSource = report.GetDataSource("Products"); data.Height = Units.Centimeters * 0.5f; // create product name text TextObject productText = new TextObject(); productText.Parent = data; productText.CreateUniqueName(); productText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); productText.Text = "[Products.ProductName]"; // create group footer group.GroupFooter = new GroupFooterBand(); group.GroupFooter.CreateUniqueName(); group.GroupFooter.Height = Units.Centimeters * 1; if (PDFCheckBox.Checked) { report.Prepare(); FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport(); export.Export(report); } else report.Show();
這是創(chuàng)建帶有組的報(bào)表模板的示例。如您所見,我們一直在創(chuàng)建報(bào)表對(duì)象,從報(bào)表和文本對(duì)象頁面開始。我們將創(chuàng)建的對(duì)象放入另一個(gè)對(duì)象,并配置其顯示的屬性。這要求FastReport.Net報(bào)表模板結(jié)構(gòu)具有良好的性能。除此之外,為了實(shí)現(xiàn)所需的元素排列,您將有足夠的時(shí)間來運(yùn)行報(bào)表以進(jìn)行視覺評(píng)估并校正對(duì)象的屬性,以顯示所需的寬度或坐標(biāo)。因此,這種方法應(yīng)該是報(bào)表列表、矩陣、表格——無需調(diào)整元素相對(duì)于彼此的位置。
代碼中生成的報(bào)表的主要優(yōu)點(diǎn)是能夠在執(zhí)行期間編輯報(bào)表,并根據(jù)條件或事件添加代碼。這使您可以使用直接取決于客戶端應(yīng)用程序本身的復(fù)雜邏輯來創(chuàng)建報(bào)表。
盡管擴(kuò)展名是frx,FastReport.Net報(bào)表模板是類似xml的格式已經(jīng)不是什么秘密了。這些模板易于通過查看器程序進(jìn)行傳輸和在其他計(jì)算機(jī)上查看。移動(dòng)性和與客戶端應(yīng)用程序的獨(dú)立性——這是frx報(bào)表格式或以fpx格式填充數(shù)據(jù)的版本的傳統(tǒng)模式的不可否認(rèn)的優(yōu)勢。因此,在應(yīng)用程序中從代碼生成報(bào)表后,許多人希望能夠?qū)⑵滢D(zhuǎn)換為類似xml的常規(guī)格式frx。這樣做非常簡單:
Report report = new Report(); report.Save("C:\\report.frx");
也就是說,您只需要在報(bào)表對(duì)象中使用“Save”保存功能。將參數(shù)傳遞到保存報(bào)表的文件名的路徑。因此,我們可以使用通過代碼創(chuàng)建的單個(gè)帳戶,并在必要時(shí)將其轉(zhuǎn)換為傳統(tǒng)格式frx。生成的文件可以傳輸?shù)狡渌_發(fā)人員或用戶。
基于代碼的報(bào)表和frx報(bào)表都有其優(yōu)勢。第一個(gè)是針對(duì)在需要“隨時(shí)隨地”直接更改報(bào)表時(shí)特別有效,第二個(gè)針對(duì)是在需要移動(dòng)報(bào)表或模板中的許多元素之間具有明確定義的位置時(shí)使用。您需要根據(jù)自己的需求選擇一種基于這些優(yōu)勢的創(chuàng)建報(bào)表的方法。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動(dòng) | 在線客服