上節(jié)我們實(shí)現(xiàn)了預(yù)覽和設(shè)計(jì)的窗體,也可以預(yù)覽和設(shè)計(jì)我們的報(bào)表了,但是我們還是沒有數(shù)據(jù)的交互,這次我們來創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),然后將數(shù)據(jù)綁定到我們的報(bào)表中
數(shù)據(jù)庫(kù)準(zhǔn)備
-
我們使用VisualStudio自帶的mdf文件數(shù)據(jù)庫(kù),首先我們?cè)诠こ讨袆?chuàng)建一個(gè)文件夾APP_DATA,在此文件夾中創(chuàng)建一個(gè)mdf文件
創(chuàng)建窗口 -
然后我們可以在服務(wù)器資源管理器中看到我們的數(shù)據(jù)庫(kù)
服務(wù)器資源管理器 - 然后我們右鍵表新建一個(gè)表
CREATE TABLE [dbo].[T_students]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[no] NCHAR(50) NULL,
[name] NCHAR(50) NULL,
[school] NCHAR(50) NULL,
[class] NCHAR(50) NULL
)
-
然后在設(shè)計(jì)器左上角點(diǎn)擊更新按鈕,在彈出的窗口中點(diǎn)擊更新數(shù)據(jù)庫(kù)
更新
彈出的窗口 -
更狀態(tài)全部打鉤之后,表就創(chuàng)建好了,我們刷新服務(wù)器資源管理器,然后打開表數(shù)據(jù),添加一些數(shù)據(jù)進(jìn)去
添加的數(shù)據(jù) -
ok我們現(xiàn)在在服務(wù)器資源管理器里面選擇mdf文件,在屬性列表里,找到連接字符串,拷貝一份出來,等會(huì)需要用的到
屬性
Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=I:\dotNET\ReportDemo\ReportDemo\APP_DATA\Database.mdf;Integrated Security=True
設(shè)計(jì)器數(shù)據(jù)獲取
- 我們?cè)赑reviewForm.cs里,寫一個(gè)方法getData()
private DataSet getData(){
String connStr = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=I:\dotNET\ReportDemo\ReportDemo\APP_DATA\Database.mdf;Integrated Security=True";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
String sqlStr = "SELECT * FROM T_students";
SqlCommand comm = new SqlCommand();
comm.CommandText = sqlStr;
comm.CommandType = CommandType.Text;
comm.Connection = conn;
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(comm);
adapter.Fill(ds, "學(xué)生信息");
conn.Close();
return ds;
}
- 然后我們?cè)贔orm_Load方法里綁定數(shù)據(jù)集
private void DesignForm_Load(object sender, EventArgs e)
{
dReport = new Report();
String reportFile = "Report/report.frx";
dReport.Load(reportFile);
this.designerControl1.Report = dReport; //這里不一樣的是把Report賦給控件的屬性
DataSet ds = new DataSet();
ds = getData();
dReport.RegisterData(ds, "學(xué)生信息");
dReport.Prepare();
dReport.Design();
}
-
我們F5一下,在設(shè)計(jì)窗口下,在[數(shù)據(jù)]->[選擇數(shù)據(jù)源]中,就能看到我們綁定的數(shù)據(jù)了
結(jié)果 -
我們?cè)O(shè)計(jì)一個(gè)表格,把我們的數(shù)據(jù)放進(jìn)去
設(shè)計(jì)的報(bào)表 - 我們可以預(yù)覽一下,然后保存
為Preview綁定數(shù)據(jù)
- 現(xiàn)在我們用同樣的方法為Preview綁定數(shù)據(jù),getData()方法一致,可以直接復(fù)制過來
private void PreviewForm_Load(object sender, EventArgs e)
{
pReport = new Report(); //實(shí)例化一個(gè)Report報(bào)表
String reportFile = "Report/report.frx";
pReport.Load(reportFile); //載入報(bào)表文件
pReport.Preview = previewControl1; //設(shè)置報(bào)表的Preview控件(這里的previewControl1就是我們之前拖進(jìn)去的那個(gè))
DataSet ds = new DataSet();
ds = getData();
pReport.RegisterData(ds,"學(xué)生信息");
pReport.Prepare(); //準(zhǔn)備
pReport.ShowPrepared(); //顯示
}
-
我們測(cè)試一下
預(yù)覽界面
由于我還沒弄清楚報(bào)表里面的循環(huán)輸出,所以只看到了一行數(shù)據(jù),等我去研究研究。然后我們后面再說關(guān)于條件數(shù)據(jù)等
到這里FastReport的引入、加載、綁定都心里有數(shù)了!