翻譯|使用教程|編輯:王香|2018-09-12 10:17:28.000|閱讀 834 次
概述:本文詳細(xì)介紹了如何在報(bào)表設(shè)計(jì)器中使用帶有函數(shù)的自定義庫。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
【下載FastReport.Net最新版本】
在報(bào)表設(shè)計(jì)器中的內(nèi)置函數(shù)庫并不是很小,但有時(shí)候仍然缺乏一些特定的功能。由于報(bào)表中的腳本,可以輕松實(shí)現(xiàn)所需的功能。但是,如果許多記錄中需要此功能呢?每次都將它添加到報(bào)表腳本中?當(dāng)然不是。可以在連接到報(bào)表設(shè)計(jì)器的庫中收集所有需要的函數(shù)。需要庫與報(bào)表位于同一文件夾中,創(chuàng)建一個(gè)類庫項(xiàng)目,將在其中擁有一個(gè)測(cè)試函數(shù)。例如,將數(shù)組轉(zhuǎn)換為字符串的功能,編譯庫:
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)表生成器并使用我們的庫ArrayToString,這是一個(gè)正常的Winforms應(yīng)用程序。將庫FastReport添加到項(xiàng)目引用:建議將庫存儲(chǔ)在與應(yīng)用程序的可執(zhí)行文件相同的目錄中,所以可以在draft中添加對(duì)它的引用。除此之外,庫將被添加到編譯中包含可執(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庫的鏈接。
創(chuàng)建一個(gè)簡(jiǎn)單的報(bào)表模板——產(chǎn)品類別列表:
將文本對(duì)象添加到頁腳頁帶。轉(zhuǎn)到“Script”選項(xiàng)卡,創(chuàng)建一個(gè)列表,將在其中添加類別名稱。用戶庫中的函數(shù)將列表轉(zhuǎn)換為一行,在頁面的基礎(chǔ)中顯示該行。所以,創(chuàng)建一個(gè)列表:
public class ReportScript { public List<string> list = new List<string>(); }
回到報(bào)表頁面。對(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庫添加到使用中,則可以縮短名稱。現(xiàn)在可以在預(yù)覽模式下運(yùn)行報(bào)表,頁面頂部:
在頁面底部:
在一行中獲得了產(chǎn)品類別列表,可以在頁面底部的文本對(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)目中使用自定義庫來生成報(bào)表,則需要將其放在bin文件夾中。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn