小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

會員管理系統(tǒng)的設(shè)計和開發(fā)(2)

 空城66 2014-12-31

在上篇《會員管理系統(tǒng)的設(shè)計和開發(fā)(1)》介紹了關(guān)于會員系統(tǒng)的一些總體設(shè)計思路和要點(diǎn),經(jīng)過一段時間開發(fā),軟件終于完成并發(fā)布。在這期間,碰到了不少技術(shù)難點(diǎn),并積累了不少開發(fā)心得和經(jīng)驗,本篇繼續(xù)介紹這個開發(fā)過程中相關(guān)的技術(shù)要點(diǎn),主要介紹其中RDLC報表的相關(guān)操作,如報表的設(shè)計和通用的動態(tài)加載模塊的處理等內(nèi)容。

什么是RDLC呢,它的全稱是Report Definition Language Client-Side,原來是微軟基于SQL Server 報表服務(wù)中經(jīng)提供了一種被稱為報表定義語言(Report Definition Language, RDL)的改進(jìn)版本,增加了客戶端處理報表功能,在WinForm和WebForm中均可以使用這種報表。

1、RDLC報表的設(shè)計

我們知道,RDLC報表展現(xiàn)是基于一個定義的報表文件的,一般是以rdlc后綴名的報表文件,在VS里面新建一個項,選定報表文件即可,如下所示。

 RDLC的報表設(shè)計界面,提供了很多相關(guān)的控件進(jìn)行繪制。

通過這些操作我們可以創(chuàng)建一些報表的元素在里面,如可以增加一些數(shù)據(jù)字段和列表字段在里面,最簡單的報表例子里面,可以增加一些圖片,標(biāo)題,列表等內(nèi)容,如下所示。

但往往這個只是測試階段的學(xué)習(xí),一般情況下,我們的報表比上面的規(guī)范很多,要考慮樣式還有布局設(shè)計等方面,下面給出一些我會員系統(tǒng)里面的報表例子供參考對比。

下面是一個會員消費(fèi)清單的報表設(shè)計,包括總的消費(fèi)情況和明細(xì)報表設(shè)計。

以及一個會員身份的打印報表設(shè)計。

設(shè)計報表完成,只是完成了一部分工作,我們還需要建立數(shù)據(jù)集,把字段綁定到報表上面去,如上面的[Name]這樣標(biāo)識的就是字段已經(jīng)綁定的了,一開始這些可能是沒有的,需要我們先創(chuàng)建數(shù)據(jù)集對象。

創(chuàng)建數(shù)據(jù)集對象,可以選擇是DataSet類型的或者是實(shí)體類型的,網(wǎng)上介紹很多是基于DataSet方式的,由于我的Winform框架及整個系列的產(chǎn)品是基于實(shí)體類的,因此我的報表創(chuàng)建的數(shù)據(jù)集對象也是基于實(shí)體對象的。

從上面可以看出,創(chuàng)建的數(shù)據(jù)集對象,是引用我的實(shí)體類對象,里面包含了很多對象屬性,非常容易理解。

創(chuàng)建了相應(yīng)的數(shù)據(jù)集對象后,我們進(jìn)一步就是把這些信息綁定到設(shè)計的報表上面了。

先在報表視圖里面,把列表對象選中,綁定它的數(shù)據(jù)集對象,操作如下面兩個圖所示。

這樣我們就可以隨意指定列表里面的列的字段綁定操作了。

 

2、RDLC報表的動態(tài)加載

通過第一節(jié)介紹的報表設(shè)計和數(shù)據(jù)集對象的創(chuàng)建,然后進(jìn)行綁定操作后,基本上設(shè)計部分就已經(jīng)完成了,注意的就是調(diào)整好對應(yīng)的格式,加載測試后進(jìn)行微調(diào)整即可了。

本小節(jié)繼續(xù)介紹,如何把數(shù)據(jù)進(jìn)行動態(tài)加載進(jìn)行綁定。

為了實(shí)現(xiàn)報表的預(yù)覽,我們需要在UI項目里面添加下面兩個程序集對象。

然后在一個預(yù)覽報表的窗體里面,放置一個報表查看控件ReportViewer,設(shè)計報表預(yù)覽界面窗體如下所示。

以后我們設(shè)計的報表,就準(zhǔn)備通過這個界面進(jìn)行展現(xiàn)的了。

通過ReportViewer我們可以獲得LocalReport對象的引用,然后對它進(jìn)行處理即可。

LocalReport report = this.rpViewer.LocalReport;

報表的數(shù)據(jù)綁定,主要就是增加報表對象里面的對應(yīng)的ReportDataSource對象即可。

通過報表對象LocalReport,我們可以使用代碼增加對應(yīng)的數(shù)據(jù)源給它的報表對象,這樣我們需要展現(xiàn)的報表數(shù)據(jù)源就可以和報表進(jìn)行綁定了,具體的處理代碼如下所示。

那么我們?nèi)绾卧诮缑娲绑w里面進(jìn)行報表的綁定操作呢?

封裝好通用的報表展現(xiàn)界面后,我們只需要調(diào)用他們的接口進(jìn)行綁定一個新的報表和數(shù)據(jù)源了。具體代碼如下所示。

        private void menuPrintReport_Click(object sender, EventArgs e)
        {
            string headerID = this.winGridViewPager1.gridView1.GetFocusedRowCellDisplayText("ID");
            if (!string.IsNullOrEmpty(headerID))
            {
                MemberConsumptionInfo consumptionInfo = BLLFactory<MemberConsumption>.Instance.FindByID(headerID);
                if (consumptionInfo != null)
                {
                    //修改一些屬性值
                    //會員姓名
                    consumptionInfo.Data1 = BLLFactory<Member.BLL.Member>.Instance.GetNameByID(consumptionInfo.Member_ID);
                    consumptionInfo.Data2 = SecurityHelper.GetFullNameByID(consumptionInfo.Creator);

                    List<MemberConsumptionInfo> list = new List<MemberConsumptionInfo>();
                    list.Add(consumptionInfo);

                    List<ConsumptionDetailInfo> detailList = BLLFactory<ConsumptionDetail>.Instance.FindByBillNo(consumptionInfo.BillNo);
                    foreach (ConsumptionDetailInfo info in detailList)
                    {
                        //修改ProductID為商品編碼
                        info.Product_ID = BLLFactory<MemberProduct>.Instance.GetHandNoByID(info.Product_ID);
                    }

                    ReportViewerDialog dlg = new ReportViewerDialog();
                    dlg.DataSourceDict.Add("MemberConsumptionInfo", list);
                    dlg.DataSourceDict.Add("ConsumptionDetailInfo", detailList);
                    dlg.ReportName = "WHC.Member.ConsumptionReport";

                    AppConfig config = new AppConfig();
                    string companyName = config.AppConfigGet("CertificatedCompany");
                    dlg.Parameters.Add("CompanyName", companyName);
                    dlg.ShowDialog();
                }
            }
        } 

3、RDLC報表的展現(xiàn)效果

在上面兩個小節(jié)里面,我們已經(jīng)介紹過RDLC報表如何設(shè)計、如何綁定到ReportViewer報表預(yù)覽界面上了,還有也說明了如何在主窗體里面使用數(shù)據(jù)源進(jìn)行動態(tài)的加載操作,但到底具體的報表展現(xiàn)效果如何呢,下面我給出幾個案例作為參考。

1)消費(fèi)清單報表

2)收費(fèi)記錄報表

3)會員卡片打印報表

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多