在报表上使用自定义控件 

ActiveReports 允许你在报表中添加第三方控件,并将它作为用户自定义控件进行组织。你还可以通过类型转换来访问控件的属性。下面我们演示用隐藏的文本框来填充Visual Studio 中的TreeView 控件。

添加一个 TreeView 控件到报表中

1.     从 Visual Studio 工具箱中拖一个 TreeView控件到报表的详细区域。

2.     在属性窗口中看到该控件被命名为CustomControl1。

添加一个隐藏的文本框数据到报表中

1.     建立报表与 nwind.mdb的连接。 (详细步骤可以参考 添加报表数据源 章节。)

2.     在查询字段中,输入下面的SQL查询语句。

SQL 查询语句

SELECT * FROM Orders ORDER BY ShipCountry, ShipCity, CustomerID, EmployeeID

 

3.     从报表资源管理器中,将下列字段拖到报表的详细区域:

l ShipCountry

l ShipCity

l CustomerID

l EmployeeID

4.     选择以上四个文本框,在属性窗口中将 Visible 属性设置为 False

创建一个为TreeView控件添加节点的方法

1.     选择右键菜单中的查看代码菜单项。

2.     添加一个为TreeView控件添加节点的方法。

下面是实现该功能需要的代码。

使用Visual Basic.NET 代码

将Visual Basic.NET 代码粘贴到报表类中。

Private Function AddNodeToTreeView(ByVal colNodes As TreeNodeCollection, ByVal sText As String) As TreeNode

   Dim objTreeNode As TreeNode

   objTreeNode = New TreeNode(sText)

   colNodes.Add(objTreeNode)

   Return objTreeNode

End Function

使用 C# 代码

将C# 代码粘贴到报表类中。

private TreeNode AddNodeToTreeView(TreeNodeCollection colNodes, string sText)

{

    TreeNode objTreeNode;

    objTreeNode = new TreeNode(sText);

    colNodes.Add(objTreeNode);

    return objTreeNode;

}

在代码中访问TreeView控件的属性并设置数据

1.     回到报表的设计视图,双击详细区域,为该区域创建Format事件的处理方法。

2.     添加代码,从隐藏文本框中取值并付给TreeView的属性。

下面是实现该功能需要的代码。

将Visual Basic.NET 代码粘贴到详细区域的Format事件中。

'Type cast the custom control as a TreeView

Dim TreeView1 As New TreeView

TreeView1 = CType(Me.CustomControl1.Control, TreeView)

'Create a tree node

Dim objCountryTreeNode As TreeNode

'Assign the text from a hidden textbox to the node

objCountryTreeNode = AddNodeToTreeView(TreeView1.Nodes, Me.txtShipCountry1.Text)

'Add a second-level node

AddNodeToTreeView(objCountryTreeNode.Nodes, Me.txtShipCity1.Text)

'Expand the top-level node so the second-level node is in view

objCountryTreeNode.Expand()

'Create a second top-level node

Dim objCustomerTreeNode As TreeNode

objCustomerTreeNode = AddNodeToTreeView(TreeView1.Nodes, Me.txtCustomerID1.Text)

AddNodeToTreeView(objCustomerTreeNode.Nodes, Me.txtEmployeeID1.Text)

objCustomerTreeNode.Expand()

将C# 代码粘贴到详细区域的Format事件中。

//Type cast the custom control as a TreeView

TreeView TreeView1 = new TreeView();

TreeView1 = (TreeView)this.customControl1.Control;

//Create a tree node

TreeNode objCountryTreeNode;

//Assign the text from a hidden textbox to the node

objCountryTreeNode = AddNodeToTreeView(TreeView1.Nodes, this.txtShipCountry1.Text);

//Add a second-level node

AddNodeToTreeView(objCountryTreeNode.Nodes, this.txtShipCity1.Text);

//Expand the top-level node so the second-level node is in view

objCountryTreeNode.Expand();

//Create a second top-level node

TreeNode objCustomerTreeNode;

objCustomerTreeNode = AddNodeToTreeView(TreeView1.Nodes, this.txtCustomerID1.Text);

AddNodeToTreeView(objCustomerTreeNode.Nodes, this.txtEmployeeID1.Text);

objCustomerTreeNode.Expand();