翻譯|使用教程|編輯:楊鵬連|2021-07-06 16:19:12.360|閱讀 157 次
概述:本文詳細(xì)介紹了如何在報(bào)表設(shè)計(jì)器中使用帶有函數(shù)的自定義庫(kù)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
隨著現(xiàn)代技術(shù)的高速發(fā)展,相關(guān)產(chǎn)業(yè)所衍生出來(lái)的數(shù)據(jù)集是越來(lái)越龐大。那么我們?nèi)绾文軌蚝?jiǎn)單、方便、快捷的展現(xiàn)自己輸入數(shù)據(jù)?并且能夠以我們想要的方式展現(xiàn)出來(lái)?報(bào)表——這一產(chǎn)物便應(yīng)運(yùn)而生,現(xiàn)在市面上流行的報(bào)表工具類(lèi)產(chǎn)品也是層出不窮。
第三方報(bào)表工具是數(shù)據(jù)庫(kù)存儲(chǔ),數(shù)據(jù)庫(kù)程序通常可以存放的數(shù)據(jù)量是相當(dāng)大的,可以處理非常復(fù)雜的數(shù)據(jù)結(jié)構(gòu)關(guān)系。報(bào)表數(shù)據(jù)交互也快捷方便,速度也非常快,可視化交互渲染。
在報(bào)表設(shè)計(jì)器中的內(nèi)置函數(shù)庫(kù)并不是很小,但有時(shí)候仍然缺乏一些特定的功能。由于報(bào)表中的腳本,可以輕松實(shí)現(xiàn)所需的功能。但是,如果許多記錄中需要此功能呢?每次都將它添加到報(bào)表腳本中?當(dāng)然不是。可以在連接到報(bào)表設(shè)計(jì)器的庫(kù)中收集所有需要的函數(shù)。需要庫(kù)與報(bào)表位于同一文件夾中,創(chuàng)建一個(gè)類(lèi)庫(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)用程序,將在其中打開(kāi)報(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)表開(kāi)頭。在報(bào)表屬性中,可以添加指向.net庫(kù)的鏈接。
創(chuàng)建一個(gè)簡(jiǎn)單的報(bào)表模板——產(chǎn)品類(lèi)別列表:
將文本對(duì)象添加到頁(yè)腳頁(yè)帶。轉(zhuǎn)到“Script”選項(xiàng)卡,創(chuàng)建一個(gè)列表,將在其中添加類(lèi)別名稱(chēng)。用戶(hù)庫(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ì)添加類(lèi)別的名稱(chēng),現(xiàn)在,為Page Footer band中的文本對(duì)象添加BeforePrint事件處理程序:
private void Text1_BeforePrint(object sender, EventArgs e) { Text1.Text = ArrayToString.UserDefined.ArrayToString(list); }
為文本對(duì)象分配用戶(hù)定義函數(shù)從先前添加的dll返回的字符串。請(qǐng)注意,函數(shù)的路徑已滿(mǎn),包含命名空間和類(lèi)名。如果將ArrayToString庫(kù)添加到使用中,則可以縮短名稱(chēng)。現(xiàn)在可以在預(yù)覽模式下運(yùn)行報(bào)表,頁(yè)面頂部:
在頁(yè)面底部:
在一行中獲得了產(chǎn)品類(lèi)別列表,可以在頁(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文件夾中。
如果您對(duì)FastReport感興趣,可以在慧都網(wǎng)免費(fèi)下載最新試用版,歡迎加入FastReport QQ交流群:702295239
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn