BOS万能报表每页打印固定行数且在表格最后补齐空白行

栏目:k3wise知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

BOS万能报表每页打印固定行数且在表格最后补齐空白行

实现每页打印固定行数方法如下:

在明细detail的属性栏,选择脚本-》打印之前,输入以下脚本:

int row=0;
private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
{   
 //控制每页报表显示的条数   
  if (row!=0&&row%5==0) //每页显示5条   
   {        
    Detail.PageBreak = DevExpress.XtraReports.UI.PageBreak.BeforeBand;//无需单独添加分页控件    
     }
      else    
     {        
      Detail.PageBreak = DevExpress.XtraReports.UI.PageBreak.None;      
     }  
     row++;
}


在最后一页补齐空白行的方法如下:

在明细的数据表格(类似xrTable1、xrTable2)属性栏,选择脚本-》打印之前,输入以下脚本:

private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {

    

    XRTable pb = (XRTable)sender;

    //curRow即为最上面“打印固定行数”脚本中定义的变量,需要与之一起配合使用

    //bOSReport1为整个报表对象在设计器中的名称

    //Page2为单据第一个表体的数据 Page3为单据第二个表体的数据 其他单据体依次类推。。。

    if(curRow == ((System.Data.DataSet)(bOSReport1.DataSource)).Tables["Page2"].Rows.Count) //打印明细表最后一行时

    {

        XRTable table = xrTable2;//获取到显示明细数据的表格,即在BOS万能报表设计器中的表格名称,类似xrTable1、xrTable2... 根据实际情况修改即可

        int rowheight = table.Rows[table.Rows.Count - 1].Height; //取设计时的单元行高度,也可以自定义设置行高度

        

        int SpaceRowCount = 5-curRow%5;//根据每页固定要显示的行数,决定要补齐的空白行数

        XRTableRow[] xrRow = new XRTableRow[SpaceRowCount];

        

        if (SpaceRowCount > 0)

        {

            for (int i = 0; i < SpaceRowCount; i++)

            {

                xrRow[i] = new XRTableRow();

                xrRow[i].Size = new Size(table.Width, rowheight);

                xrRow[i].Location = new Point(table.Location.X,i*rowheight);

                //设置行边框:Top Left Right Bottom 表示在哪个方向上有边框

                xrRow[i].Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right) | DevExpress.XtraPrinting.BorderSide.Bottom)));

                xrRow[i].BorderColor = table.Rows[table.Rows.Count - 1].BorderColor;

                xrRow[i].BorderWidth = 1;

                CreateCellArray(xrRow[i],table);    

            }

            table.Rows.AddRange(xrRow);

        }

    }  

}

///<summary>

///创建空白行的Cell

///在XRTableRow中添加单元格

///</summary>

///<param name="xrRow"></param>

private void CreateCellArray(XRTableRow xrRow, XRTable table)

{

    XRTableRow row = table.Rows[table.Rows.Count - 1];//显示数表的最后一行

    int Xmargin = 0;

    for (int i = 0; i < row.Cells.Count; i++)

    {

        XRTableCell xrcell = new XRTableCell();

        xrcell.BorderWidth = 1;

        //设置单元格边框:Top Left Right Bottom 表示在哪个方向上有边框

        xrcell.Borders = (DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide)((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Right | DevExpress.XtraPrinting.BorderSide.Bottom)));

        xrcell.Width = row.Cells[i].Width;

        xrcell.BackColor = row.Cells[i].BackColor;

        xrcell.Height = row.Height;

        if (i != 0)

        {

            xrcell.Location = new Point(Xmargin + row.Cells[i].Width, 0);

        }

        else

        {

            xrcell.Location = new Point(0, 0);

        }

        xrRow.Cells.Add(xrcell);

    }

}


BOS万能报表每页打印固定行数且在表格最后补齐空白行

实现每页打印固定行数方法如下:在明细detail的属性栏,选择脚本-》打印之前,输入以下脚本:int row=0;private void OnBeforePrint(object...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息