先写一个Dev报表的基础教程,也算是给自己看的,防止忘记。

感谢同事的帮忙,没有你们,我也学不到那么多Dev报表的技术细节。

还有,最近发现一个网站http://www.devexpresscn.com/

Dev控件中文网,好像是正版授权的,在这个网站上,有一些基础教程,可以作为学习资料

 

新建一个ASP.NETWeb应用程序

wKioL1Q6mv-jMG3GAAQfEf6VQc8902.jpg

添加一个叫WebFormForReport的页面

wKiom1Q6mwShA0jwAALE-qVYfro228.jpg

首先拖出两个控件,ReportToolBarReportViewer

 

wKioL1Q6m0jD3dktAAQroOkVE5M055.jpg

ReportViewer绑定到ReportToolBar Report Viewer

wKiom1Q6nnazoDjxAAInf3-m2SE324.jpg

创建一个叫DataSetForReport的数据集

wKioL1Q6m3HhfvrUAALNp7IqBrI017.jpg

 

添加两个表Mastertable ClidrenTable,设置MastertableID为主键,ClidrenTableIDClidrenID为主键

wKiom1Q6m0XRBpiwAAGAt3Xwshk299.jpg

wKioL1Q6m4jBQAVYAAFqWlmLD9s362.jpg

wKiom1Q6m2DjnP3IAAFUj2fCU10768.jpg

 

右键单击空白区域添加关系

wKioL1Q6m6KwS-_1AAHrttOceL4288.jpg

wKioL1Q6m6_yC_CqAALFlq5aE3w784.jpg

 

添加一个叫XtraReport1的报表

wKiom1Q6m4PzOIeaAAMiOclhm0U455.jpg

ReportViewerReport设为XtraReport1

wKiom1Q6m5GByiSDAAHHq61XXFo452.jpg


 

打开XtraReport1的设计界面,点击左上角的按钮,将数据源设为DataSetForReport1

wKioL1Q6m9Ojzy0eAAILabADAHs245.jpg

 

 

右键点击插入Datail Report

wKiom1Q6m6ijqYs_AAEzjTuEiP0522.jpg

 

右键点击DetailReport,依次插入ReportHeaderGroupHeader1Detail1

wKioL1Q6m-zgjFnZAAGbcC4A3RI485.jpg

 

拖入XRLabel放入ReportHeader

wKiom1Q6m8fTfjLeAALrb2ekH3I162.jpg

摆成下列样式

wKioL1Q6nAvAMvjzAAGcDLIVIcQ084.jpg


label设置text和绑定数据

wKiom1Q6m-Owu5AjAAGuc1cgz5o782.jpg

wKioL1Q6nCeTPEoIAAK0YnNCy6c953.jpg

XRTable拖入GroupHeader1中,并修改背景颜色和文本信息

wKiom1Q6m_ySTa-oAASL4YDj7fI418.jpg

XRTable拖入Detail1中,并绑定数据(注意:一定要通过主表选项中的关联子表来绑定,否则数据显示会出错)


 wKioL1Q6nEXC3yazAAN4jhY4E70101.jpg

 


添加统计:

 

添加一个Label,右键点击Summary,选择要统计的列,统计方式和显示的格式

注意:这里同样要选择主表选项中的关联子表来绑定



wKioL1Q6nHvgxyyrAAN4jhY4E70530.jpg

wKiom1Q6nETx1g_WAAOOjoDK-ss235.jpg

 

 


统计页数:

 

添加一个XRPageInfo即可

wKioL1Q6nLKToG0BAANQrYyLOUo376.jpg

 

最后记得要设置DetailReportPageBreak属性为AfterBand,这样数据才会分页显示

wKiom1Q6nIvTnAyKAANlrSSHnS8735.jpg

右键点击查看代码

为数据源添加数据

 

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");

 

            //循环添加数据

            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);

            }

 

            //映射数据源

            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");

 

            //循环添加数据

            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);

               }

            }

 

            //映射数据源

            this.dataSetForReport1.ClidrenTable.Merge(dt);

 

        }

       #endregion

 

因为是演示,所以写的比较简单。

实际应用中可以通过Session获取数据,也就是在打开该页面之前将数据放进Session中,然后页面初始化时直接获取Session,然后转为DataTable映射即可。

 

最后记得清除licenses.licx中的数据(盗版)

wKioL1Q6nM2i-aOSAAKjJ_7lCio600.jpg

 

现在按F5运行一下

wKiom1Q6nKChOTHkAAEcM1TakqA615.jpg