轉帖|其它|編輯:郝浩|2011-10-25 13:47:07.000|閱讀 1222 次
概述:在這里先介紹下ActiveReports。ActiveReports是.net下出色的報表開發工具,我最喜歡它的地方就是提供了單獨的代碼文件,你能夠操作數據源,也可以控制報表的顯示等等,很靈活。但是可能由于宣傳不足,國內用的比較少,這兩天用上了最新的ActiveReports for .net 3.0,發現比起2.0,變化是比較大的,要從2.0遷移到3.0,還要費一點功夫。下面說說升級后的主要區別和要注意的幾個地方,其中包含了一些朋友在本系列前面的隨筆的評論中提到的問題。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在這里先介紹下ActiveReports。ActiveReports是.net下出色的報表開發工具,我最喜歡它的地方就是提供了單獨的代碼文件,你能夠操作數據源,也可以控制報表的顯示等等,很靈活。但是可能由于宣傳不足,國內用的比較少,這兩天用上了最新的ActiveReports for .net 3.0,發現比起2.0,變化是比較大的,要從2.0遷移到3.0,還要費一點功夫。下面說說升級后的主要區別和要注意的幾個地方,其中包含了一些朋友在本系列前面的隨筆的評論中提到的問題。
安裝:
我的安裝過程可謂是一波三折。先卸載掉了2.0,安裝3.0后發現VS2005每次啟動后都提示“包加載錯誤”,要求使用“devenv /resetskippkgs”重新加載的提示。所有的窗體都無法打開設計器,而且給項目添加新項的時候也沒有顯示ActiveReports的文件。根據提示在網上搜了一遍,按照微軟提供的資料也無法解決,無奈之下只好修復VS2005,完成后窗體設計器可以打開了,這才松了口氣,重新安裝ActiveReports,這次沒有出現什么問題,一次OK。
安裝完了,第一件事就是打開幫助看看有什么新的變化,但是很不幸,幫助無法打開,只好又執行了一次幫助安裝目錄下的H2Reg.exe /r,才把幫助搞定。
這下整個安裝過程才完成,可以正式開始了。
可視化設計器:
設計器中最明顯的變化就是添加了“Preview”的Tab頁,可以設計好布局后直接在這里預覽。3.0版 本還在工具欄里提供了在設計期放大,縮小瀏覽布局的按鈕,剛安裝后并不顯示,需要在工具欄配置中選中。這是個很方便的功能,因為在作一些表格式的報表時, 經常在設計期看到線都是對齊的,但是在打印出來后常常有中斷或者偏差,有了這個功能,在設計期就能方便地檢查這些錯誤。
還有就是在2.0中,打開報表設計器的時候會顯示ReportExplore,現在ReportExplore設計成和類解決方案,屬性等窗口一樣的模式,可以和這些窗口重疊在一起顯示。ReportExplore中的Fileds節點增加了下級:Bound和Caculated。
代碼遷移:
在3.0版本中,程序集名稱,命名空間都已經變了,以前用2.0寫的報表都編譯不了,如果仍然要使用rpx+cs文件的方式,就要自己修改代碼,重新添加項目引用。3.0中也提供了工具,用來轉換2.0下的報表。該工具是“工具”菜單下的ActiveRepots File Convert,根據向導轉換完成后,你會發現,原先的報表的圖表變成了和組件一樣的圖標,原來的Rpx文件已經不存在了,一個報表的文件組成變成了.cs + resx,同樣你如果新建一個報表,也是cs+resx這樣的文件組合。這應當是3.0中最大的變化了,所以如果你安裝了3.0后,看到原來的rpx文件的圖標是未知文件類型的,請不要奇怪。
3.0中還提供了從Access導入報表的功能,你可以在給項目添加新項的時候看到“ActiveReports 3.0 Access Import Wizard”的項,提供了一個向導來從指定的Access庫中導入報表。
問題
ActiveReport提供了一個很重要的功能-End User,并且有一個示例程序,實現了一個報表設計器。在這個示例程序中,如果使用了中文字段名,并且顯示在Report Explore的Fileds節點中,從Report Explore向報表上拖放的時候會產生一個錯誤,提示控件名不合法。
這是因為在拖放的時候會自動生成一個和字段名相像的TextBox框,名字為“txt+字段名”,所以會報出錯誤。但是在2.0中卻沒有這個錯誤,當出現中文字段名時,生成對應的TextBox會自動更名,使用合法的名字。所以這應當是3.0中的一個bug。
要重現這個bug,只需要在EndUser示例的窗口的Load事件中添加下面的代碼:
DataTable dt = new DataTable();
dt.Columns.Add("中國");
dt.Columns.Add("123123");
dt.Columns.Add("asdf");
dt.TableName = "table1";
DataSet ds = new DataSet();
ds.Tables.Add(dt);
this.arDesigner.Report.DataSource = ds;
this.arDesigner.Report.DataMember = ds.Tables[0].TableName;
程序啟動后會在Report Explore中看到添加的字段,直接拖放到報表上就能看到錯誤了。
雖然有這個問題,但是并不妨礙使用中文字段,只要不使用拖放功能就可以了。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園