• <menu id="w2i4a"></menu>
  • logo FastReport.Net教程2020(持續(xù)更新中)

    文檔首頁>>FastReport.Net教程2020(持續(xù)更新中)>>何時(shí)是使用代碼報(bào)表的最佳方法,何時(shí)采用frx格式

    何時(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) | 在線客服

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();