一. 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...