廢話不說直接正題!
1 下載FastReport.NET。網上搜索一下,下載資源一大把,這是收費的,所以我使用了demo版;
注意:FastReport.NET 和FastReport Studio不是同一個東西,別下錯了;
FR.NET只支持VS2005/2008;
官網:http://ns.fast-report.com/en/,有說明文檔使用手冊下載,論壇也很不錯,問題解答的很詳細;
2 先在本機上安裝好VS2005/2008(我試驗的時候使用的是2008),再安裝FR.NET,啓動VS,新建一個ASP.NET WEB應用程序項目;
3 頁面設計:在VS中設計Default.aspx頁面時,可直接在工具箱中拖出一個 WebReport控件放置於頁面上:
圖一
4 數據源指定:FR支持多種數據源(詳見其說明),可以在aspx頁面上選定數據源,或者進入FR設計器中再指定;
拖放一個SqlDataSouce控件到頁面上,設定好,在測試連接的時候最好預覽下數據,確保數據源能正常使用;
選定WebReport控件,如圖一,會有一個“>”標記按鈕出現,點擊,會出現如圖二所示對話框:
圖二
點擊“Select Data Source”,彈出一個對話框,選擇剛剛配置好的SqlDataSouce;
5 設計:點擊圖二中的“Design Report...”就會打開FR設計器,如圖三所示:
圖三
在設計器裏,大家可以盡情地發揮,設計出你最喜歡(多數時候得老闆喜歡)的樣式,FR已經提供了很多模板,很漂亮,大家稍微改動
一下就能得到自己的模板(.frx文件)。我這裏只是簡單的拖放了幾個文本控件,然後將它們綁定到了前面選定好的datasouce上,大家可以自己
動手點點看,這一點很簡單,也許你是第一次用,但憑猜想你也可以做出來。
6 codding/運行:設計好後點保存,然後關掉設計器(必須關掉,因爲它是以置頂子窗體彈出來的,不關掉不能操作VS)。
在aspx頁面上選中webreport控件,查看它的事件,爲它添加上StartReport事件,寫上幾行代碼就OK了,如圖四:
圖四
注意:在Page_load事件中也有一行代碼,我這裏的webreport控件的名字就叫“WebReport1”;
保存,運行,大家就可以看到效果了~
到此,這個簡單示例就完成了;剛開始使用FR千萬記得查看用戶手冊,你的很多疑問在這裏可以找到答案;
另:很多人在問FastReport如何從頁面傳遞參數的問題,我在這裏簡單說下吧:
FR的參數分兩種,Query Parameter 和Report Parameter;
Query Parameter (查詢參數):是在FR中用嚮導設定DataSouce時,可以用帶參數的SQl文來指定,形如:
select * from table where country = @parameterName
對於這種參數,在用嚮導創建DataSouce時,會彈出一個窗口來讓你對參數進行編輯,如圖五:
圖五
查詢參數的名字是 qparam1,大家需要給它指定表達式 ,Expression屬性中 “[param1]”就是一個表達式,param1是一個報表參數
Report Parameter。這意思就是,在運行時,qparam1的值將會和param1一致;
Report Parameter(報表參數):它的值你可以在FR的腳本中指定,也可以在aspx頁面的cs代碼中指定(參見圖四中被註釋掉的代碼);看圖三設計器界面圖,在右邊的窗口裏,你可以找到參數這一項,你可以在這裏新建/編輯一個報表參數;
現在大家應該明白如何從頁面傳遞參數的值,並把它用於SQl查詢中了;
但實際上還有一個問題,使用Query Parameter 時,它只能是一個簡單值,不能是複雜的字符串,比如這樣的SQL文:
select * from table where country in ('en','cn')
如果你想把('en','cn') 這整個部分設定爲一個參數那是不行的,嚮導會報錯,這時如何解決?
在FR設計器中,大家可以看到它是有自己的腳本的(C#語言),在其中添加上_StartReport事件,代碼如下所示:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using FastReport;
using FastReport.Data;
using FastReport.Dialog;
using FastReport.Barcode;
using FastReport.Table;
using FastReport.Utils;
using FastReport.Controls;
namespace FastReport
{
public class ReportScript
{
private void _StartReport(object sender, EventArgs e)
{
string str1 = (Report.Parameters.FindByName("param1")).Value.ToString();
TableDataSource datasource = Report.GetDataSource("protable") as TableDataSource;
datasource.SelectCommand = "select * from protable where " + str1 ;
}
}
}
再結合圖四中被註釋掉的傳參代碼,大家應該全明白了……ok,就到這裏吧。
學海無涯,回頭沒岸