成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

自定義數(shù)據(jù)的RDLC報(bào)表開發(fā)入門(一)

(1)前言

成都創(chuàng)新互聯(lián)是專業(yè)的加查網(wǎng)站建設(shè)公司,加查接單;提供成都網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行加查網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

使用了VS好多年,一直認(rèn)為制作報(bào)表是件很頭痛的事,不是自己沒有研究過,但說真的的確是很頭痛的事,尤其是C#下面的各種數(shù)據(jù)綁定,網(wǎng)上蠟人張的BLOG對RDLC就有很透徹的詳細(xì)說明,我看了半天,就給那些報(bào)表結(jié)構(gòu)回路搞得莫名其妙,大師級別的人果然功力與我不一樣。因?yàn)轫?xiàng)目的需要,這兩天回爐一下自己從前的報(bào)表知識,順便寫篇東西,好讓后來者別多太多像我一般的無謂腦力跟體力勞動(dòng)。

本人是位明顯的實(shí)用主義者,程序開發(fā)有太多的理論,量你一輩子的時(shí)間也絕對不可能全部了解清楚的,可當(dāng)你實(shí)際操作過一個(gè)工程的話,有些理論或許會(huì)不言而喻,很多專家都說,RDLC是很容易上手的,個(gè)人實(shí)踐證明,確實(shí)不難——只要你能硬著頭皮撐過我這篇入門級別的教程就好了,進(jìn)階的時(shí)候就真別問我,我也是菜鳥。

(2)自定義數(shù)據(jù)集(DataSet)

網(wǎng)上挺多關(guān)于RDLC的例子其實(shí)都用了Northwind的那個(gè)例子,個(gè)人認(rèn)為,只是報(bào)表練練手就要?jiǎng)佑脭?shù)據(jù)庫好樣的龐然大物顯得有點(diǎn)過份,所以在本教程里我寧愿選擇自定義的數(shù)據(jù),代碼填充數(shù)據(jù)的內(nèi)容,作為一個(gè)簡單的教程而言,單獨(dú)的示例工程就能運(yùn)行很重要,而且,不管是自定義的數(shù)據(jù)集還是取自SQLServer的數(shù)據(jù)集,在實(shí)際報(bào)表操作上沒什么差別,個(gè)人認(rèn)為自定義的數(shù)據(jù)集更靈活一點(diǎn)。

DataSet在VS上面的昵稱是“數(shù)據(jù)集”,可能探討過數(shù)據(jù)庫的童鞋對這個(gè)的理解得比我要多,我的理解是比較像圖形化的Struct集合體,可以更方便更靈活創(chuàng)建你所需要的數(shù)據(jù)結(jié)構(gòu)體,接下來就依照這樣定義好的結(jié)構(gòu)生成一個(gè)實(shí)例(myDataSet),再填充你獲得的數(shù)據(jù),一但你的報(bào)表跟實(shí)例作了綁定,那樣數(shù)據(jù)呈現(xiàn)就不需要我們多想了,微軟會(huì)自動(dòng)幫你做好的——這便是RDLC的整個(gè)開發(fā)思路而已,內(nèi)容不多。

下面是實(shí)操部分,我的開發(fā)環(huán)境是VS2012,好像以前用VS2008也是差不多的樣子。

1)新建一個(gè)VS2012的WinFrom工程項(xiàng)目,我的工程命名是“RdlcTest”;

2)在解決方案資源管理器中,右鍵工程,“添加”--“新建項(xiàng)”,選擇“數(shù)據(jù)集(DataSet)”,工程便增加了一個(gè)MyDataSet.xsd的項(xiàng),這個(gè)就是你自己定義的數(shù)據(jù)集啦;

3)雙擊MyDataSet.xsd,在圖形界面下新建你自己的數(shù)據(jù)結(jié)構(gòu)體,以下是我自己的例子,數(shù)據(jù)類型全部是String(右鍵打開列的屬性可以設(shè)置),有什么意義你就自己猜吧;

自定義數(shù)據(jù)的RDLC報(bào)表開發(fā)入門(一)

(2)新建報(bào)表及關(guān)聯(lián)數(shù)據(jù)集

1)在工程中添加一張報(bào)表(Report1.rdlc),我這里沒用“報(bào)表向?qū)А?,新建好后雙擊打開,你會(huì)看到一個(gè)報(bào)表設(shè)計(jì)頁面跟一個(gè)“報(bào)表數(shù)據(jù)”的窗口(話說VS2012查找窗口還是相當(dāng)?shù)姆奖愕模?,在“?bào)表窗口”里添加一個(gè)數(shù)據(jù)集,你會(huì)看到下面這個(gè)對話框,選好剛剛建好的DataSet后,點(diǎn)確定即可。

自定義數(shù)據(jù)的RDLC報(bào)表開發(fā)入門(一)

2)添加報(bào)表數(shù)據(jù)集后的“報(bào)表數(shù)據(jù)”窗體是這樣一副模樣:

自定義數(shù)據(jù)的RDLC報(bào)表開發(fā)入門(一)

3)在報(bào)表設(shè)計(jì)窗口新建一個(gè)表,我們一條數(shù)據(jù)是7條個(gè)變量,就建一個(gè)七列的表(添加列的操作不需要詳解了吧),然后用鼠標(biāo)將“報(bào)表數(shù)據(jù)”里的DataSet1下的項(xiàng)逐個(gè)拖到表頭里去,會(huì)有下面的效果。

自定義數(shù)據(jù)的RDLC報(bào)表開發(fā)入門(一)

4)雖然新建好了表跟添加數(shù)據(jù)集,但現(xiàn)在因?yàn)檫€沒填充數(shù)據(jù),所以也不可能有東西出來,何況你報(bào)表的容器還沒有弄好呢是吧?;仡櫼幌律厦娴牟襟E,我們姑且可以這么理清一下思路:一張報(bào)表(RDLC)、一個(gè)與報(bào)表關(guān)聯(lián)的數(shù)據(jù)集(DataSet)、N多數(shù)據(jù)的容器(表或文本框)構(gòu)成一張報(bào)表的全部元素,ReportView只是用來裝報(bào)表的容器而已。

(3)添加ReportViewer及關(guān)聯(lián)報(bào)表

1)打開你工程的MainForm的設(shè)計(jì)窗體,從“工具箱”中將“ReportViewer”拖到你的MainForm里去,當(dāng)你選擇ReportViewer時(shí),其右上角有個(gè)小三角形,點(diǎn)擊一下,可以看到很多選項(xiàng):

自定義數(shù)據(jù)的RDLC報(bào)表開發(fā)入門(一)

2)第一項(xiàng)選擇報(bào)表,當(dāng)然選剛剛你添加的“Report1.rdlc”,意思就是這個(gè)ReportViewer只顯示Report1.rdlc這張表;第二項(xiàng)選擇數(shù)據(jù)源,這里需要點(diǎn)思考,如下圖所示,報(bào)表數(shù)據(jù)源“DataSet1”是剛剛在“報(bào)表數(shù)據(jù)”窗口添加的一個(gè)數(shù)據(jù)集,而數(shù)據(jù)源實(shí)例又是什么呢?我選了項(xiàng)目里的MyDataSet--TestRecord,于是在這個(gè)MainForm的窗體下面會(huì)自動(dòng)生成一個(gè)myDataSet的數(shù)據(jù)集實(shí)例及testRecordBindingSource的綁定實(shí)例(同參考下圖),我的想法是“DataSet1”像個(gè)接口,“myDataSet”則是已經(jīng)實(shí)例化的變量,類似吧?至于“父容器??俊钡倪x項(xiàng),個(gè)人建議還是選了吧,好看一點(diǎn)。

自定義數(shù)據(jù)的RDLC報(bào)表開發(fā)入門(一)

3)假如你myDataSet里面已經(jīng)有內(nèi)容的話,你可以生成看到以下的這副樣子:

自定義數(shù)據(jù)的RDLC報(bào)表開發(fā)入門(一)

4)如何填充myDataSet的數(shù)據(jù),參見下面MainForm的窗體代碼,代碼應(yīng)該是不難理解的,重要的是我想數(shù)據(jù)多樣化一點(diǎn),方便進(jìn)行下一步的報(bào)表呈現(xiàn)講解,示例工程我放到51CTO下載里了,編譯環(huán)境是VS2012,下載地址是http://down.51cto.com/data/898719,下面博文的上傳機(jī)制貌似有問題,有興趣的朋友可以隨便看看,高手莫拍。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RdlcTest
{
    public partial class MainFrom : Form
    {
        public MainFrom()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 加載窗體
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            //更新數(shù)據(jù)集的內(nèi)容
            this.UpdateDataSet();
            //刷新報(bào)表
            this.reportViewer1.RefreshReport();
        }
        /// <summary>
        /// 為myDataSet手動(dòng)添加數(shù)據(jù)
        /// </summary>
        private void UpdateDataSet()
        {
            for (int i = 0; i < 5; i++)
            {
                string id = DateTime.Now.ToString() + "-" + i.ToString("D2");
                for (int j = 0; j < 4; j++)
                {
                    this.myDataSet.TestRecord.AddTestRecordRow(id, "001", "shengqin", "Man", "Change Road", DateTime.Now, "describe : " + i.ToString("D3"));
                }
            }
            for (int j = 0; j < 4; j++)
            {
                this.myDataSet.TestRecord.AddTestRecordRow(DateTime.Now.ToString() + "-10", "002", "Joey", "Man", "Testing Speed", DateTime.Now, "describe : Joey's testing.");
            }
            for (int j = 0; j < 4; j++)
            {
                this.myDataSet.TestRecord.AddTestRecordRow(DateTime.Now.ToString() + "-11", "003", "Lily", "Woman", "Testing Speed", DateTime.Now, "describe : Lily's testing.");
            }
            for (int i = 20; i < 25; i++)
            {
                string id = DateTime.Now.ToString() + "-" + i.ToString("D2");
                for (int j = 0; j < 4; j++)
                {
                    this.myDataSet.TestRecord.AddTestRecordRow(id, "001", "shengqin", "Man", "Testing Speed", DateTime.Now, "describe : " + i.ToString("D3"));
                }
            }
        }
    }
}

當(dāng)前標(biāo)題:自定義數(shù)據(jù)的RDLC報(bào)表開發(fā)入門(一)
轉(zhuǎn)載源于:http://jinyejixie.com/article18/pdcegp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、小程序開發(fā)、云服務(wù)器網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
华容县| 卓资县| 财经| 金堂县| 唐山市| 陇南市| 泽普县| 乾安县| 措美县| 台中市| 方山县| 天气| 青浦区| 安图县| 保定市| 房产| 西林县| 苏尼特右旗| 耒阳市| 兴城市| 平凉市| 绥芬河市| 天镇县| 宣汉县| 涞水县| 海丰县| 盐池县| 阳泉市| 睢宁县| 永定县| 娄底市| 边坝县| 甘谷县| 科技| 阿鲁科尔沁旗| 长兴县| 建宁县| 民县| 井冈山市| 青神县| 康马县|