Visual Studio 2008 水晶報(bào)表快速入門(mén)主要為大家講解一些如何在ASP.NET 2008下使用水晶報(bào)表,一個(gè)快速入門(mén)的教程,從引入CrystalReport水晶報(bào)表開(kāi)始,以一個(gè)完整的流程及簡(jiǎn)要的配置代碼為例,向朋友們介紹水晶報(bào)表的使用技巧,ASP.NET開(kāi)發(fā)的朋友更應(yīng)該參閱一下。
先新建一個(gè)Web項(xiàng)目: CrystalWebApp
為項(xiàng)目添加新項(xiàng): CrystalReport1.rpt
在彈出的對(duì)話框,選擇作為空白報(bào)表。用向?qū)М?dāng)然更方便,但在這里,白手起家或許能更好地理解。
在工具箱選擇 Text Object,拖到報(bào)表頭。寫(xiě)些字,設(shè)置字體之類的。在屬性選項(xiàng)卡設(shè)置它的名字為 txtTitle 以供將來(lái)程序訪問(wèn)。
水晶報(bào)表對(duì)于程序員來(lái)說(shuō)其實(shí)跟 Repeater 控件是很相似的。于是需要數(shù)據(jù)和字段名。在Repeater 控件中你可以很隨意地指定要綁定的字段名。在程序還沒(méi)有真正運(yùn)行之前,這個(gè)字段名可以沒(méi)有任何表的字段名跟它匹配,也可以沒(méi)有任何類的屬性名跟它匹配。但在水晶報(bào)表中,字段名在設(shè)計(jì)階段就必須是真實(shí)存在的。還能稍感安慰的是,水晶報(bào)表一旦設(shè)計(jì)好之后,就能像 Repeater 控件那樣綁定任意類型的對(duì)像。而不必是設(shè)計(jì)時(shí)指定字段來(lái)源的表或類。所以我們現(xiàn)在要?jiǎng)?chuàng)造些真實(shí)存在的字段名……
create table TabTest
(
UserID int,
UserName nvarchar(50),
Age int,
Birthday datetime
)
你可以用 Access 或者 Excel 來(lái)創(chuàng)造真實(shí)存在的字段名,但我這里是使用 SQL Server。
在 "字段資源管理器" 的 "數(shù)據(jù)庫(kù)字段" 上按右鍵,選擇 "數(shù)據(jù)庫(kù)專家..."。在彈出的對(duì)話框中,創(chuàng)建新連接==>OLE DB (ADO)(Access 或者 Excel 應(yīng)點(diǎn) "數(shù)據(jù)庫(kù)文件" 前的 "+" 號(hào))。 在彈出的對(duì)話框,選擇 "SQL Native Client" 作為提供程序。
按提示一步步地做,直到連上數(shù)據(jù)庫(kù)。選擇表 TabTest,把它弄到右邊的框中。再點(diǎn)擊確定。
折騰了半天就是為了這些字段名。對(duì)水晶報(bào)表的開(kāi)發(fā)商無(wú)語(yǔ)……
把需要顯示的字段拖到 "詳細(xì)資料"。"頁(yè)眉" 和 Word 文檔中的頁(yè)眉完全不是一回事。這里的頁(yè)眉其實(shí)就是列名(表頭)。那么就順便改一下列名吧。默認(rèn)是有下劃線的,可以改一下格式。
"頁(yè)腳" 倒是跟 Word 文檔中的頁(yè)腳概念相同,可以拖個(gè)特殊字段頁(yè)碼進(jìn)去。
點(diǎn)擊工具箱中的 Line Object 可以為報(bào)表畫(huà)線。你會(huì)發(fā)現(xiàn),畫(huà)一個(gè)表格竟然是如此地困難。
在報(bào)表空白處按右鍵,設(shè)計(jì)==>打印機(jī)設(shè)置 也許有你想要的東西。
那么專業(yè)的事情應(yīng)該交給那么專業(yè)的人士去做,我們的任務(wù)是寫(xiě)代碼……
進(jìn)入 Default.aspx 的設(shè)計(jì)視圖,從工具箱中拖個(gè) CrystalReportViewer 過(guò)來(lái)。
接下來(lái)需要數(shù)據(jù)。數(shù)據(jù)當(dāng)然可以是來(lái)自設(shè)計(jì)時(shí)的表。但我這里是來(lái)自于新建的類: UserInfo。在項(xiàng)目中添加一個(gè) UserInfo 類。
using System;
namespace CrystalWebApp
{
public class UserInfo
{
private int userID;
public int UserID
{
get { return userID; }
set { userID = value; }
}
private string userName;
public string UserName
{
get { return userName; }
set { userName = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
private DateTime birthday;
public DateTime Birthday
{
get { return birthday; }
set { birthday = value; }
}
}
}
為 Default.aspx 寫(xiě)些后臺(tái)代碼
。。。