列组

我们也可以将多列组合成一组进行设置,列组和行组一样,也有Style和Header属性。
假定一个表格很宽,以致水平方向要分页才行,我们希望最关键的一列,例如编号列,能够出现在每一页的左边。

示例:

Dim doc As New PrintDoc '定义一个报表
Dim
rt As New prt.RenderTable() '定义一个表格对象
doc.Body.Children.Add(rt)
'将表格对象加入到报表中
rt.Style.GridLines.All = New prt.Linedef
'设置网格线
rt.CellStyle.Spacing.All =
0.5 '内容距离网格线0.5毫米
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
'内容水平居中
rt.Style.TextAlignVert = prt.AlignVertEnum.Center
'内容垂直居中
rt.Rows(
0).Style.BackColor = Color.LightGray '第一行背景颜色设为灰色。
rt.RowGroups(
0,1).Header = prt.TableHeaderEnum.All '将第一行作为表头。
rt.Cols(
0).Style.BackColor = Color.LightGray '第一列背景颜色设为灰色。
rt.ColGroups(
0,1).Header = prt.TableHeaderEnum.All '将第一列作为表头。
rt
.Width = "Auto" '表宽等于各列设置值之和
rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页
'下面的代码向表格中填入值

For
c As Integer = 0 to 100
    rt.Cols(c).Width =
15 '明确指定每一列的宽度
   
If c = 0 then
        rt.Cells(
0,0). Text = "编号"
   
Else
        rt.Cells(
0, c).Text = "第" & (c + 1) & "列"
   
End If
Next
For
r As Integer = 1 To 50
    rt.Cells(r,
0).Text = r
    For
c As integer = 1 to 100
        rt.Cells(r,c).Text = r &
"," & c
    Next
Next

doc.Preview()
'预览报表

执行后,你会发现编号列显示在每一页的左边:

再次提醒一下,如果需要表格的宽度等于各列的列宽设置值之和,必须满足三个条件:

1、表格的宽度设为“Auto”:

rt
.Width = "Auto" '表宽等于各列设置值之和

2、如果宽度超过页宽,那么必须允许表格水平换页:

rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded

3、每一列都必须设置列宽,不能漏掉任何一列,否则表宽始终等于页宽。

 


本页地址:http://www.foxtable.com/webhelp/topics/1217.htm