绑定多个字段
为了打印出订单表中的日期和数量,在命令窗口执行下面的代码:
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