绑定多个字段

为了打印出订单表中的日期和数量,在命令窗口执行下面的代码:

Dim doc As New PrintDoc
Dim
rt As New prt.RenderText
rt.DataBinding.DataSource = BindTables(
"订单")
rt.Text=
"[Fields!日期.Value]"
doc.body.Children.Add(rt)
rt = New prt.RenderText
rt.DataBinding.DataSource = BindTables(
"订单")
rt.Text=
"[Fields!数量.Value]"
doc.body.Children.Add(rt)
doc.Preview()

你会发现执行结果完全出乎我们的意料,先是打印所有的日期,然后打印所有的数量,而不是一个日期接一个数量。
这是因为每加入一个绑定对象,都会自动根据每一个数据行生成一个副本加入到报表中,然后再处理下一个对象。
为了解决这个问题,需要使用容器(RenderArea),将原来的打印对象加入到容器中,这些打印对象不再需要设置绑定,只需为容器设置绑定即可。

例如:

Dim doc As New PrintDoc
Dim
rt As New prt.RenderText
Dim
ra As New prt.RenderArea
ra.Style.Spacing.Bottom =
2
ra.DataBinding.DataSource = BindTables(
"订单") '将容器绑定到订单表
rt.Text =
"[Fields!日期.Value]"
ra.Children.Add(rt)
'将打印对象添加到容器中
rt = New prt.RenderText
rt.Text=
"[Fields!数量.Value]"
ra.Children.Add(rt)
doc.body.Children.Add(ra)
doc.Preview()

上述的代码将依次打印每一个订单的日期和数量。


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