先寫一個Dev報表的基礎(chǔ)教程,也算是給自己看的,防止忘記。
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡程序員、網(wǎng)頁設(shè)計師等,應用各種網(wǎng)絡程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計技術(shù)配合操作的協(xié)同工作。創(chuàng)新互聯(lián)建站專業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站制作(企業(yè)站、響應式網(wǎng)站開發(fā)、電商門戶網(wǎng)站)等服務,從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗的提升,我們力求做到極致!
感謝同事的幫忙,沒有你們,我也學不到那么多Dev報表的技術(shù)細節(jié)。
還有,最近發(fā)現(xiàn)一個網(wǎng)站http://www.devexpresscn.com/
Dev控件中文網(wǎng),好像是正版授權(quán)的,在這個網(wǎng)站上,有一些基礎(chǔ)教程,可以作為學習資料
新建一個ASP.NET空Web應用程序
添加一個叫WebFormForReport的頁面
首先拖出兩個控件,ReportToolBar和ReportViewer
將ReportViewer綁定到ReportToolBar的 Report Viewer上
創(chuàng)建一個叫DataSetForReport的數(shù)據(jù)集
添加兩個表Mastertable 和ClidrenTable,設(shè)置Mastertable的ID為主鍵,ClidrenTable的ID和ClidrenID為主鍵
右鍵單擊空白區(qū)域添加關(guān)系
添加一個叫XtraReport1的報表
將ReportViewer的Report設(shè)為XtraReport1
打開XtraReport1的設(shè)計界面,點擊左上角的按鈕,將數(shù)據(jù)源設(shè)為DataSetForReport1
右鍵點擊插入Datail Report
右鍵點擊DetailReport,依次插入ReportHeader,GroupHeader1和Detail1
拖入XRLabel放入ReportHeader中
擺成下列樣式
為label設(shè)置text和綁定數(shù)據(jù)
將XRTable拖入GroupHeader1中,并修改背景顏色和文本信息
將XRTable拖入Detail1中,并綁定數(shù)據(jù)(注意:一定要通過主表選項中的關(guān)聯(lián)子表來綁定,否則數(shù)據(jù)顯示會出錯)
添加統(tǒng)計:
添加一個Label,右鍵點擊Summary,選擇要統(tǒng)計的列,統(tǒng)計方式和顯示的格式
(注意:這里同樣要選擇主表選項中的關(guān)聯(lián)子表來綁定)
統(tǒng)計頁數(shù):
添加一個XRPageInfo即可
最后記得要設(shè)置DetailReport的PageBreak屬性為AfterBand,這樣數(shù)據(jù)才會分頁顯示
右鍵點擊查看代碼
為數(shù)據(jù)源添加數(shù)據(jù)
public XtraReport1()
{
InitializeComponent();
//全部清空
this.dataSetForReport1.Clear();
//綁定MasterTable
DataBindMaster();
//綁定DataBindClidren
DataBindClidren();
}
#region DataBindMaster
private voidDataBindMaster()
{
//清空MasterTable
this.dataSetForReport1.MasterTable.Clear();
DataTable dt = newDataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Password");
//循環(huán)添加數(shù)據(jù)
for (int i = 0; i< 5; i++)
{
DataRow dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = i.ToString();
dr["Password"] =i.ToString();
dt.Rows.Add(dr);
}
//映射數(shù)據(jù)源
this.dataSetForReport1.MasterTable.Merge(dt);
}
#endregion
#region DataBindClidren
private voidDataBindClidren()
{
//清空DataBindClidren
this.dataSetForReport1.ClidrenTable.Clear();
DataTable dt = newDataTable();
dt.Columns.Add("ID");
dt.Columns.Add("ClidrenID");
dt.Columns.Add("Comment");
//循環(huán)添加數(shù)據(jù)
for (int i = 0; i< 5; i++)
{
for (intj = 0; j < 5; j++)
{
DataRow dr = dt.NewRow();
dr["ID"] = i;
dr["ClidrenID"]=j.ToString();
dr["Comment"] = "Comment " + j.ToString();
dt.Rows.Add(dr);
}
}
//映射數(shù)據(jù)源
this.dataSetForReport1.ClidrenTable.Merge(dt);
}
#endregion
因為是演示,所以寫的比較簡單。
實際應用中可以通過Session獲取數(shù)據(jù),也就是在打開該頁面之前將數(shù)據(jù)放進Session中,然后頁面初始化時直接獲取Session,然后轉(zhuǎn)為DataTable映射即可。
最后記得清除licenses.licx中的數(shù)據(jù)(盜版)
現(xiàn)在按F5運行一下