RDLC 報表引數 常量及常用表示式的使用方法

2022-03-28 13:37:48 字數 4836 閱讀 5473

一. asp.net 程式為rdlc報表提供引數

在我們的報表中,往往需要從asp.net程式提供一些引數顯示在報表的指定位置,第一篇中我們已經講過怎樣傳遞乙個資料集,但是我們只需要乙個值,總 不能把這個值放到dataset中來傳輸吧(因為dataset本其實是由xml結成,在傳遞過程中需要比data本身更多的資源),所以這個時候我們就 需要知道如何傳遞乙個引數到rdlc報表。下面我們就來講一講。

不知道大家還記不記得我在第一篇中的default.aspx.cs中寫的乙個button事件,如下。

protected void buttonreportgenerate_click(object sender, eventargs e)

listreportdatasource = new list();

rportdataset ds = new rportdataset();

string templatepath = string.empty;

string totalrecords = string.empty;

sqlconnection conn = new sqlconnection(configurationmanager.connectionstrings["loggingconnectionstring"].connectionstring);

sqlcommand command = conn.createcommand();

command.commandtype = commandtype.text;

command.commandtext = "select * from t_bc_logs";

sqldataadapter da = new sqldataadapter(command);

da.fill(ds.t_bc_logs);

reportdatasource.add(new reportdatasource("rportdataset_t_bc_logs", ds.t_bc_logs));

//templatefiles

templatepath = "reporttemplate/logreport.rdlc";

listparameterlist = new list();

////generate report

getreportmultipledatasourcefile(reportdatasource, templatepath, parameterlist, "pdf");

其中我定義了乙個泛型變數,如下:

listparameterlist = new list();

但是我並沒有給這個變數賦任何值,我要告訴大家的就是這裡變數就是為我們傳遞引數提供的。好,下面我們就來講一下怎麼傳遞這個引數。

2. 我們從visual studio ide左邊的toolbox中拖乙個textbox到這個報表模板的頁首(在我的報表中,複雜的表頭大部分都是通過textbox來實現的,可以設計 textbox的邊框及字型等屬性來設計,所以後面的內容中我不會再提如何設計複雜的報表頁首),右擊這個textbox,選擇expression…, 在expression視窗中,我們選擇category中的parameters,然後雙擊最右邊你剛剛加的那個引數,點選確定即可。至此,對報表的設 計完成了。

3. 修改default.aspx頁面中的程式如下所示:

protected void buttonreportgenerate_click(object sender, eventargs e)

listreportdatasource = new list();

rportdataset ds = new rportdataset();

string templatepath = string.empty;

string totalrecords = string.empty;

sqlconnection conn =

new sqlconnection(configurationmanager.connectionstrings["loggingconnectionstring"].connectionstring);

sqlcommand command = conn.createcommand();

command.commandtype = commandtype.text;

command.commandtext = "select * from t_bc_logs";

sqldataadapter da = new sqldataadapter(command);

da.fill(ds.t_bc_logs);

reportdatasource.add(new reportdatasource("rportdataset_t_bc_logs", ds.t_bc_logs));

//templatefiles

templatepath = "reporttemplate/logreport.rdlc";

listparameterlist = new list();

//為引數parameter1傳遞this is a parameter

parameterlist.add(new reportparameter("parameter1", "this is a parameter"));

////generate report

getreportmultipledatasourcefile(reportdatasource, templatepath, parameterlist, "pdf");

二.使用rdlc提供的變數及常用常量

在rdlc報表中,有些你想得到的功能是用asp.net**完成不了的,比如說這個報表總共有多少頁,當前在第幾頁等等,這些功能我們就要借助rdlc表示式中自帶的一些常量了,下面就讓我們來談談這此常量。

1. 顯示總共頁數及當前頁

a) 從visual studio ide左邊的toolbox中拖兩個textbox到報表的頁首。

b) 右擊第乙個textbox,選擇expression…,在expression視窗的category中選擇globals,然後在item中雙擊選擇totalpages,這個變數就是總共多少頁,為了方便我們檢視,我們把在上面顯示的表示式進行修改如下:

="total of "+globals!totalpages.tostring()

c) 按上面的加入總頁的方式,右擊第二個textbox選擇expression…,然後在選擇globals,接著選擇pagenumber,這就是當前的頁數,同樣為了方便檢視,修改如下:

=" total of "+globals!pagenumber.tostring()

注意:剛才我們選擇總頁數和當前頁數的時候,是不是發現除了這兩個還有好幾個常量,現在解釋如下:

executiontime

生成報表的時間

pagenumber

當前的頁號

reportfolder

包含報表的檔案路徑

reportname

報表的名稱

reportserverurl

執行報表server的路徑(這裡沒有用server,所以沒有,如果用reportservice那就就存在了)

totalpages

總行數userid

當前執行報表的人

language

執行報表server的系統語言

2. 為rdlc報表中資料行增加自動編號

a) 為了完成這個功能,我們完成這個功能,現在我們為報表中已經存在的talbe在最左邊加乙個欄位叫s/n(這篇中沒有講表從**來,請參閱[原創] rdlc 報表系列(一) 建立乙個報表)。

b) 還記得我當時給這個表繫結了乙個資料集嗎?選點右擊表,選擇properties,從裡面拷出那個資料集的名稱。

c) 右擊s/n的資料字段,選擇expression,在expression的category中選擇common functionsàmiscellaneous,然後雙擊右邊item中的rownumber,在其引數中輸入資料集的名稱,如下所示:

=rownumber("rportdataset_t_bc_logs")

三.常用表示式的使用

1. 連線字元

=fields!firstname.value + fields!lastname.value 連線兩個欄位在乙個單元格中,並一行顯示

=fields!firstname.value & vbcrlf & fields!lastname.value 連線兩個欄位在乙個單元格中顯示,但是換行顯示

2. if表示式使用

=iif(fields!linetotal.value > 100, true, false) 如果成立執行true的表示式,否則執行false表示式,我可也可以寫其它的表示式代替**裡的東西

3. count表示式使用

=count(fields!dailycount.value,"weldingreportdataset_t_welderdaily") 計算weldingreportdataset_t_welderdaily資料集中dailycount有多少行

3. sum表示式使用

=sum(fields!dailycount.value,"weldingreportdataset_t_welderdaily") 計算weldingreportdataset_t_welderdaily資料集中dailycount的總和

4. format表示式使用

=cdate(fields!topaintdate.value).tostring("dd mmm yyyy") 對date的格式進行應用

六.總結

通過上面的內容,我們學習到如下內容:

1. 從asp.net傳遞引數到rdlc報表中

2. 掌握如何使用rdlc提供的常量;

3. 掌握如何使用常用的表示式

RDLC 報表 引數傳遞及主從報表

今天繼續學習rdlc報表的 引數傳遞 及 主從報表 一 先建立dataset,如下圖 二 建立乙個報表rptdept.rdlc,顯示部門t dpet的資料 三 嵌入default.aspx中,寫在default.aspx.cs中寫些基本 view code?1 2345 6789 1011 1213...

使用RDLC報表 三 向RDLC報表傳入引數

在使用報表向客戶展示結果資料時,實時的在報表中顯示某些特定的資料是必需的,如 顯示的部門 列印的日期等。本文只簡單的演示向報表內傳入乙個字元值。如有其它問題,歡迎討論。1 新建乙個工程testreport,乙個form窗體,放入乙個textbox 乙個button按鈕,再放入乙個reportview...

使用RDLC報表向報表傳入引數

在使用報表向客戶展示結果資料時,實時的在報表中顯示某些特定的資料是必需的,如 顯示的部門 列印的日期等。本文只簡單的演示向報表內傳入乙個字元值。如有其它問題,歡迎討論。1 新建乙個工程testreport,乙個form窗體,放入乙個textbox 乙個button按鈕,再放入乙個reportview...