##1、想批量生成一堆物資信息卡,效果如下圖所示,fastreport可以一下全部生成,並且發現不用單獨寫東西,

##2、發現FastReport官方給出的Demo.exe很友好,基本可以滿足要求,想嘗試修改tree樹,直接加載自定義的報表,通過ILSpy查看Demo源碼,發現tree的數據源是Demos\Reports\reports.xml,修改reports.xml,
基本滿足要求,不用再動手開發
-
<?xml version="1.0" encoding="utf-8"?> <Reports> <FolderName="Definition"> <ReportFile="wz_barcode_one.frx"/> <ReportFile="wz_barcode_all.frx"/> </Folder> <FolderName="General"> <ReportFile="Simple List.frx"/>
##3、想繼續完善,做的友好點,實現如下效果,用ListView顯示數據,根據用戶選擇,在打印數據,發現了兩個難點

###3.1 自定義用戶數據源的問題,網上百般查找和測試都無用,官方文檔、Demo也一一看了,可能在軟件中能實現,直接通過FastRepost來自定義數據源嗎,真是難。后來在官網上終於發現了有這個一個 FRNetProgrammerManual-en.pdf 這個文檔中 看到一個 Passing custom SQL的功能,最終經過測試,代碼如下,做報表,只要能自定義數據源,我想一切都不是問題了。
-
try{ TableDataSource dts =Report.GetDataSource("####")asTableDataSource; dts.SelectCommand="SELECT * FROM ### where WZID in ("+ss+")"; // MessageBox.Show(dts.SelectCommand.ToString()); dts.Init(); //不能少 關鍵 } catch(Exception ee){ MessageBox.Show(ee.Message.ToString()); return; }
###3.2 關於ListView的使用,TextBox,grid,ComboBox,DataSelector都試了一遍,發現這些控件都是FastReport自帶的過濾控件只要綁定數據列,就能實現過濾,唯獨ListView沒這功能,也是各種測試都無果,后來只要定義了兩個數據源,一個數據源用來綁定ListView,一個用來綁定報表,至於綁定綁定報表的功能在這就起到數據字段的功能,最后通過自定義sql來決定數據源。
###3.3 關於ListView的使用 不知道Fastreport是不是抽風,控件的click事件均能生成和保存,但是其他事件比如
ItemChecked,初始的時候設置了,結果運行一次之后,事件值被自動清空了,不知道什么原因,后來通過
Form1_Load,強制注冊可解決
-
privatevoidForm1_Load(object sender,EventArgs e){ lv_BaseWZinfo.ItemChecked+= lv_BaseWZinfo_ItemChecked
###3.4 關於控件的DialogResult值的問題,發現只有設置為Ok時,才能在點擊button時跳轉至報表,如果設置為None,click事件會觸發,但不會顯示報表,設置為OK,不選擇任何東西也會跳轉至報表,最后折中通過默認將button的
DialogResult設置為None,發生選中時觸發為OK
-
privatevoid lv_BaseWZinfo_ItemChecked(object sender,ItemCheckedEventArgs e) { if(e.Item.Checked){ btnOk.DialogResult=DialogResult.OK; } }
###3.5 有想進一步改造Demo的可以通過ILSpy反編譯一下,進行修改