首页 > 代码库 > DEV报表基础教程(二)

DEV报表基础教程(二)


    嗯,最近客户需求变更,单据明细数量要超过一页。导致现在单据不符合需求(PS:这就是不参考以前成品的后果),还好,我想起来怎么改了,现在写出来,省的忘了。

 

以前的单据样式(只能单页,还要写代码补空行。。。。。。)

wKiom1SQIbeR7wb5AAKm10khF7w347.jpg

注:红框里的ReportHeader和ReportFooter在一张单据只会出现一次,而ReportFooter回紧贴Detail之后

然后,如果超过每页的设定高度是,就成这样了

第一页

wKiom1SQIcqh_cO9AAIBlPXivG8809.jpg

第二页

wKiom1SQIcriQ3VgAAIXqQemcM4799.jpg

第三页

wKioL1SQImrhq2hAAAE8zCB-jKM639.jpg





 

完全不能用啊。。。。。。

 

所以改造开始

注:如果想要自定义纸张大小,记得把报表的PaperKind的值选为Custom,然后PageHeight和PageWidth就可以修改了,单位是像素。

wKiom1SQIhzS58xJAAAzUQIJilw039.jpg

首先,点击左上角添加DataSourse

wKiom1SQIhLBO0qOAAE1TU3mnNo529.jpg

设计页面添加指定的报表明细

wKioL1SQIvzBi9jBAAEIiVS8aSg092.jpg


添加Table并绑定你想要的显示的明细数据(注意要绑定的是主表下的明细表字段)

wKiom1SQIr3hkinUAAJrMKPBkPI178.jpg

在最上方和最下方拉出一个空白区域wKioL1SQItGiVCN3AAIzv3wFfBo553.jpg


注意:最下方的是独立空白,和Detail没有任何关系,红色单箭头是表示分界线

然后在上方和下方添加lable然后绑定想要显示的数据

(这样就不需要用代码补空行了,表头和表尾在每页都是固定位置)

wKiom1SQIm_DySD0AAI4VYYO7JA065.jpg

注意:右上角的XRPageInfo的RunningBand设为DetailReport

这样这个页数就会以该主表记录下明细所占的页数为分母

wKioL1SQIxzRKiHvAAEygtO-qlU841.jpg

 

 

 

 

 

 

 

在报表的后台添加如下代码

 public XtraReport1()
       {
           InitializeComponent();
           //全部清空
           this.dataSetForReport1.Clear();
           //绑定MasterTable
           DataBindMaster();
           //绑定DataBindClidren
           DataBindClidren();
       }
 
       #region DataBindMaster
       private void DataBindMaster()
       {
           //清空MasterTable
           this.dataSetForReport1.MasterTable.Clear();
 
           DataTable dt = new DataTable();
           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"] ="YDNZ14111200810";
                dt.Rows.Add(dr);
           }
 
           //映射数据源
           this.dataSetForReport1.MasterTable.Merge(dt);
       }
       #endregion
 
       #region DataBindClidren
       private void DataBindClidren()
       {
           //清空DataBindClidren
           this.dataSetForReport1.ClidrenTable.Clear();
 
           DataTable dt = new DataTable();
           dt.Columns.Add("ID");
           dt.Columns.Add("ClidrenID");
           dt.Columns.Add("Comment");
 
           //循环添加数据
           for (int i = 0; i < 5; i++)
           {
                for (int j = 0; j < 55; 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

 

      

然后运行一下


wKioL1SQI5qTvK07AAH9i9Rq2bQ874.jpg

wKiom1SQIvqRLf3lAAEvrPbtPlw210.jpg


总共5条主表记录,275条明细记录,

每页最多显示13条明细,总共25页


本文出自 “270加40” 博客,请务必保留此出处http://270jia40.blog.51cto.com/9149400/1590819

DEV报表基础教程(二)