FOXTABLE编程 下载本文

内容发布更新时间 : 2024/11/15 14:24:21星期一 下面是文章的全部内容请认真阅读。

.

数据绑定

最简单的绑定

首先还是打开我们的示例文件“专业报表.Table”,然后在命令窗口执行下面的代码: Dim doc As New PrintDoc Dim rt As New prt.RenderText

rt.DataBinding.DataSource = BindTables(\订单\将rt绑定到订单表 rt.Text= \产品.Value]\设置打印字段 doc.body.Children.Add(rt) doc.Preview()

上述代码会打印出订单表中每一行的产品名称。

DataBinding用于设置打印对象的绑定属性,该属性包括一些子属性,DataSource表示数据来源,数据来源可以是Table,还可以是数组或者集合。

需要注意的是,不能直接绑定到Table,如果要绑定到Table,必须用BindTables来设置,例如:

rt.DataBinding.DataSource = BindTables(\订单\

如果对象的内容来自于某一列,其Text属性的设置格式如下: [Fields!列名称.Value]

使用表达式

在命令窗口执行下面的代码: Dim doc As New PrintDoc Dim rt As New prt.RenderText

rt.DataBinding.DataSource = BindTables(\订单\将rt绑定到订单表 rt.Text= \金额.Value,1)]\设置打印表达式 doc.body.Children.Add(rt) doc.Preview()

留意方括号中的内容:

Math.Round(Fields!金额.Value,1)

意思是打印的时候将金额列的内容,保留一位小数,你可以在Text属性中使用Foxtable支持的所有函数。

注意表达式必须用方括号括起来。

日期的打印

为了得到常规的日期格式,可以利用Format格式化日期数据: Dim doc As New PrintDoc Dim rt As New prt.RenderText

rt.DataBinding.DataSource = BindTables(\订单\将rt绑定到订单表 rt.Text= \日期.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 = \日期.Value]\

ra.Children.Add(rt) '将打印对象添加到容器中 rt = New prt.RenderText

rt.Text= \数量.Value]\ ra.Children.Add(rt)

doc.body.Children.Add(ra) doc.Preview()

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

打印标签

有了绑定,打印标签比以前更简单。 示例

Dim doc As New PrintDoc '定义一个报表

Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight Dim ra As New prt.RenderArea Dim rt As prt.RenderText ra.Width = 40 '设置标签宽度

ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '禁止水平分割 ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never '禁止垂直分割 ra.Style.Spacing.Right = 2 '设置标签之间的所有和上下间隔为2毫米 ra.Style.Spacing.Bottom = 2

ra.Style.Padding.All = 1 ' 标签内容距离边框为1毫米

ra.Style.Borders.All = New prt.Linedef(0.3, Color.Red) '设置边框

ra.DataBinding.DataSource = BindTables(\员工\将容器绑定到员工表 Doc.Body.ChildRen.Add(ra) '将容器加入到报表中 rt = New prt.RenderText

rt.Text = \姓名:[Fields!姓名.Value]\ra.Children.Add(rt) '添加到容器中 rt = New prt.RenderText

;.

.

rt.Text = \部门:[Fields!部门.Value]\ra.Children.Add(rt) '添加到容器中 rt = New prt.RenderText

rt.Text = \职务:[Fields!职务.Value]\ra.Children.Add(rt) '添加到容器中 Doc.Preview() '预览报表

表格与绑定

行组也可以设置绑定,这样我们可以很方便地将一个表格绑定到数据表。 例如,打印订单表中的某些列,代码非常简单: Dim doc As New PrintDoc

Dim rt As New prt.RenderTable Dim tb as Table = Tables(\订单\

Dim ColNames As String() = New String(){\产品\客户\单价\数量\金额\For c As integer = 0 To ColNames.Length -1 rt.Cells(0,c).Text = ColNames(c)

rt.Cols(c).Width = tb.Cols(ColNames(c)).PrintWidth

rt.Cells(1, c).Text = \设置绑定表达式 Next

rt.RowGroups(0,1).Style.TextAlignVert = prt.AlignVertEnum.Center '第一行内容垂直居中 rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '将第一行作为表头。

rt.RowGroups(1,1).DataBinding.DataSource = BindTables(\订单\将第二行绑定到订单表 doc.Body.Children.Add(rt) doc.Preview()

注意这一行代码:

rt.RowGroups(1,1).DataBinding.DataSource = BindTables(\订单\将第二行绑定到订单表

该行代码将表格的第二行绑定到订单表,这样第二行将根据订单表中的每一行数据,自动生成副本,完成整个表格的打印。 FOXtable编程基本概念

DataTable和Table

Foxtable中有一个集合DataTables,通过该集合可以获得指定名称的表,例如: DataTables(\产品\'产品表 DataTables(\客户\'客户表 DataTables(\订单\'订单表

实际上你是看不到DataTable的,你看到的是Table,也就是说,上面的三个图,实际上就是三个Table。

那么什么是Table呢?你可以这样理解,DataTable就像一个仓库,所有从数据文件中加载的数据,都存放在这里,而且这个仓库是不直接面对用户的;而Table就像一个展厅,是负责和用户打交道的,这个展厅(Table)从仓库(DataTable)中取得数据,并呈现给用户。

同样,Foxtable中也有一个集合Tables,通过该集合可以获得指定名称的Table,在没有建立关联的情况下,我们这个简化的订单管理系统包括三个Table,分别是:

;.