• <menu id="w2i4a"></menu>
  • logo Fastreport.Net 教程2018(完結(jié))

    文檔首頁(yè)>>Fastreport.Net 教程2018(完結(jié))>>【FastReport教程】如何在報(bào)表設(shè)計(jì)器中使用帶有函數(shù)的自定義庫(kù)

    【FastReport教程】如何在報(bào)表設(shè)計(jì)器中使用帶有函數(shù)的自定義庫(kù)


    【下載FastReport.Net最新版本】

    在報(bào)表設(shè)計(jì)器中的內(nèi)置函數(shù)庫(kù)并不是很小,但有時(shí)候仍然缺乏一些特定的功能。由于報(bào)表中的腳本,可以輕松實(shí)現(xiàn)所需的功能。但是,如果許多記錄中需要此功能呢?每次都將它添加到報(bào)表腳本中?當(dāng)然不是??梢栽谶B接到報(bào)表設(shè)計(jì)器的庫(kù)中收集所有需要的函數(shù)。需要庫(kù)與報(bào)表位于同一文件夾中,創(chuàng)建一個(gè)類庫(kù)項(xiàng)目,將在其中擁有一個(gè)測(cè)試函數(shù)。例如,將數(shù)組轉(zhuǎn)換為字符串的功能,編譯庫(kù):

    namespace ArrayToString
    {
     public static class UserDefined
     {
     public static string ArrayToString(List<string> parameters)
     {
     return String.Join(",", parameters);
     }
     }
    }
    

    現(xiàn)在創(chuàng)建應(yīng)用程序,將在其中打開報(bào)表生成器并使用我們的庫(kù)ArrayToString,這是一個(gè)正常的Winforms應(yīng)用程序。將庫(kù)FastReport添加到項(xiàng)目引用:建議將庫(kù)存儲(chǔ)在與應(yīng)用程序的可執(zhí)行文件相同的目錄中,所以可以在draft中添加對(duì)它的引用。除此之外,庫(kù)將被添加到編譯中包含可執(zhí)行文件的文件夾中,應(yīng)用程序中只有表單和按鈕,添加按鈕單擊事件處理程序:

    private void RunBtn_Click(object sender, EventArgs e)
     {
     Report report = new Report();
     report.Design();
     }
     

    運(yùn)行該應(yīng)用程序,然后單擊按鈕,報(bào)表設(shè)計(jì)器將以空?qǐng)?bào)表開頭。在報(bào)表屬性中,可以添加指向.net庫(kù)的鏈接。

    CustomLib

    創(chuàng)建一個(gè)簡(jiǎn)單的報(bào)表模板——產(chǎn)品類別列表:

    CustomLib

    將文本對(duì)象添加到頁(yè)腳頁(yè)帶。轉(zhuǎn)到“Script”選項(xiàng)卡,創(chuàng)建一個(gè)列表,將在其中添加類別名稱。用戶庫(kù)中的函數(shù)將列表轉(zhuǎn)換為一行,在頁(yè)面的基礎(chǔ)中顯示該行。所以,創(chuàng)建一個(gè)列表:

    public class ReportScript
     {
     public List<string> list = new List<string>();
     }

    回到報(bào)表頁(yè)面。對(duì)于Data band,創(chuàng)建AfterPrint事件處理程序:

     private void Data1_AfterPrint(object sender, EventArgs e)
     {
     list.Add(((String)Report.GetColumnValue("Categories.CategoryName")));
     }
     

    每次顯示band“Data”時(shí)都會(huì)添加類別的名稱,現(xiàn)在,為Page Footer band中的文本對(duì)象添加BeforePrint事件處理程序:

     private void Text1_BeforePrint(object sender, EventArgs e)
     {
     Text1.Text = ArrayToString.UserDefined.ArrayToString(list);
     }
     

    為文本對(duì)象分配用戶定義函數(shù)從先前添加的dll返回的字符串。請(qǐng)注意,函數(shù)的路徑已滿,包含命名空間和類名。如果將ArrayToString庫(kù)添加到使用中,則可以縮短名稱?,F(xiàn)在可以在預(yù)覽模式下運(yùn)行報(bào)表,頁(yè)面頂部:

    CustomLib

    在頁(yè)面底部:

    CustomLib

    在一行中獲得了產(chǎn)品類別列表,可以在頁(yè)面底部的文本對(duì)象中使用以下表達(dá)式:

      [ArrayToString.UserDefined.ArrayToString(list)]
      

    相當(dāng)于:

       private void Text1_BeforePrint(object sender, EventArgs e)
     {
     Text1.Text = ArrayToString.UserDefined.ArrayToString(list);
     }
    

    不需要?jiǎng)?chuàng)建事件處理程序,如果要在Web項(xiàng)目中使用自定義庫(kù)來(lái)生成報(bào)表,則需要將其放在bin文件夾中。

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    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); })();