一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示使用报表构建UI-入库业务查询模块...
生活随笔
收集整理的這篇文章主要介紹了
一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示使用报表构建UI-入库业务查询模块...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
回顧與說明
前面我們把“商品字典”、“商品入庫”、“商品庫存查詢”三個模塊已經概括或者詳細的演示完了,這些模塊涉及到簡單數據的增、刪、修,也涉及到復雜業務處理的事務、業務層提取,以及MIS系統中非常常見的查詢、報表打印技術和基礎字典的緩存查詢技術。本文內容
今天我們將以另外一種技術實現另一個模塊“商品入庫查詢”,將采用何種技術呢,其實也是一個很簡單的技術,在構建UI應用中使用報表技術,即我們把打印預覽的報表技術使用在業務查詢應用的主體UI之中,如下圖所示一樣的效果:制做界面
首先,我們需要在UI項目中增加一個WinForm窗體ProductInQueryForm拖動控件達到如下效果:在這里,我們需要注意的是需要向界面放一個報表預覽控件,報表預覽控件由EAS.Report.Controls程序集承載,類型EAS.Report.Controls.RDLReportViewer,打印預覽控件工具條顯示位置由屬性ToolBoxDockStyle決定,我們設置為DockStyle.Bottom。處理查詢
接下來我們編寫查詢相關的代碼,先在數據層接口項目中的IProductInList的分部類定義IProductInList.cs文件中增加如下代碼: 1: /// <summary> 2: /// 表接口 IProductInList(產品入庫)。 3: /// </summary> 4: public partial interface IProductInList 5: { 6: /// <summary> 7: /// 根據入庫票據號查詢入庫明細。 8: /// </summary> 9: /// <param name="billCode">入庫票據號。</param>10: void GetProductInList(string billCode);11: ?12: /// <summary>13: /// 根據入庫時間及拼音簡碼查詢入庫明細。14: /// </summary>15: /// <param name="startTime">開始時間。</param>16: /// <param name="endTime">結束時間。</param>17: /// <param name="pyCode">拼音簡碼。</param>18: void GetProductInList(DateTime startTime,DateTime endTime,string pyCode);19: }同樣,我們需要在數據層實現項目中實現這個方法: 1: public void GetProductInList(DateTime startTime, DateTime endTime, string pyCode) 2: { 3: Condition condition = this.CreateCondition(); 4: ? 5: if (!startTime.Equals(endTime)) 6: { 7: List<DateTime> times = new List<DateTime>(2); 8: times.Add(startTime); 9: times.Add(endTime);10: ?11: condition.AddElement("InTime", times, ElementType.BetWeen);12: }13: ?14: if (pyCode.Length > 0)15: condition.AddElement("SqlText", "CODE in (select CODE from dbo.PRODUCT where PYCODE like '" + pyCode + "%')", ElementType.SqlCondition);16: ?17: this.Query(condition);18: }大家在這地方仔細看一下,因為在商品庫存表中沒有定義產品的拼音簡碼,所以我就使用了一個字查詢,并以SQL條件的形式寫了出來,在實現應用中,應該在產品庫存表中增加拼音簡碼字典,以方便查詢。制作報表
這一步在前面的文章中已經有過詳細的介紹了,在這就簡單的走過,打開報表設計器,選擇對象報表,數據對象為Product.DAL.SQLServer.ProductInList,我們做出如下樣式的報表:需要注意的是,在這個報表中,我增加了一個分組,按單據號進行分組并顯示分組統計,完成報表設計之后,保存在編譯目標目錄中的Reports文件夾中并取名為“商品入庫查詢報表.rdl”。集成代碼
接下來我們修改程序,把報表掛載進來,編寫“查詢”按鈕的事件處理代碼: 1: private void btnSearch_Click(object sender, EventArgs e) 2: { 3: //加載報表 4: 5: if (this.reportViewer.SourceRdl==null) 6: { 7: System.IO.TextReader textReader = null; 8: try 9: {10: string fileName = Path.Combine(Application.StartupPath, "Reports\\商品入庫查詢報表.rdl");11: textReader = new System.IO.StreamReader(fileName);12: this.reportViewer.SourceRdl = textReader.ReadToEnd();13: }14: finally15: {16: if (textReader != null)17: textReader.Close();18: }19: }20: ?21: //處理數據22: IProductInList table = DALHelper.DALManager.CreateProductInList();23: table.GetProductInList(this.dtpStartTime.Value,this.dtpEndTime.Value, this.tbSearch.Text);24: this.reportViewer.DataObject = table;25: } 運行結果????編譯并運行程序,我們看一下運行效果:??????? 打印預覽:我們把報表導出來,選擇導出Excel格式:這里我們需要注意的是:導出Excel格式只支持Excel2007格式,這個讓我很糾結,我不喜歡裝備龐大的office2007,2010更是用一個月就用不成了,挺郁悶的,Wps自帶的表格軟件打不開這個格式。至此,“商品入庫查詢”模塊的相關處理就此結束,接下來我將介紹“商品字典”的另一個實現,同時演示ORM對象與DataGridView的綁定技術,希望大家感興趣,對AgileEAS.NET平臺感興趣的朋友呢,可以下載了完整代碼之后自己看看,有問題請及時的和我聯系。有關本例所涉及的數據表結構請參考基于AgileEAS.NET平臺基礎類庫進行應用開發-總體說明及數據定義一文,有關數據對象模型定義文件、文檔、DDL腳本請下載:http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本例完整代碼下載:Product.Demo.rar。鏈接
一步一步教你使用AgileEAS.NET基礎類庫進行應用開發-系列目錄AgileEAS.NET平臺開發指南-系列目錄AgileEAS.NET應用開發平臺介紹-文章索引AgileEAS.NET平臺應用開發教程-案例計劃AgileEAS.NET官方網站敏捷軟件工程實驗室QQ群:116773358轉載于:https://blog.51cto.com/agilelab/603071
總結
以上是生活随笔為你收集整理的一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示使用报表构建UI-入库业务查询模块...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基本配置2-被忽悠进了CentOS 6
- 下一篇: 踏实才是硬道理