ActiveReports for .NET 3 Online Help Request technical support
Walkthrough: Bookmarks with Subreports
See Also
User Guide > Samples and Walkthroughs > Walkthroughs > Standard Edition Walkthroughs > Advanced > Bookmarks Walkthroughs > Walkthrough: Bookmarks with Subreports

Glossary Item Box

ActiveReports allows Bookmarks to be easily set up and used in subreports by adding code to the Detail Format event of the parent and child reports.

This walkthrough illustrates how to set up and use Bookmarks in a subreport.

This walkthrough is split up into the following activities:

To complete the walkthrough, you must have access to the Northwind database.
A copy is located at C:\Program Files\Data Dynamics\ActiveReports for .NET 3.0\Data\NWIND.MDB.

When you have completed this walkthrough, you will have a report that looks similar to the following.

Adding two ActiveReports to a Visual Studio project

To add two ActiveReports to a Visual Studio project

  1. Open a new project in Visual Studio.
  2. From the Project menu, select Add New Item.
  3. Select ActiveReports 3.0 File and rename the file rptMain.
  4. Click Open.
  5. From the Project menu, select Add New Item.
  6. Select ActiveReports 3.0 File and rename the file rptSub.
  7. Click Open.

Connecting rptMain to a data source

To connect the parent report to a data source

  1. Click on the gray report DataSource icon in the Detail section of rptMain to open the report DataSource dialog.
  2. Select the "OLE DB" tab.
  3. Click Build.
  4. Select Microsoft Jet 4.0 OLE DB Provider and click Next.
  5. Click the ellipsis button to browse for the access path to the Northwind database. Click Open once you have selected the appropriate access path.
  6. Click OK to continue.
  7. In the Query field, type "Select * from categories."
  8. Click OK to return to the report design surface.

Adding controls to rptMain to contain data

To add controls to the report

  1. Add the following controls to the Detail section of rptMain:

    Control DataField Name Text Location Miscellaneous
    Label lblProductName Product Name:  0, 0.31
    Label lblCategoryName Category Name: 0, 0
    TextBox CategoryName txtCategoryName1 CategoryName 1.25, 0 Font = Bold;
    ForeColor = DarkGreen
    Subreport ctlSubreport 1.25, 0.31
  2. Set the CanShrink property of the Detail section to True.

Adding a control to rptSub to contain data

To add a control to the report

  1. Set the CanShrink property of the Detail section to True.
  2. Set the BackColor property of the Detail section to DarkSeaGreen.

  3. Add the following control to the Detail section of rptSub:

    Control DataField Name Text Location Miscellaneous
    TextBox ProductName txtProductName ProductName 0, 0 Size = 3, 0.19

Adding the code needed to save the current record's categoryID

To write the code in Visual Basic

To write the code in C#

Adding the code to create a data source for rptMain and pass it to rptSub

To write the code in Visual Basic or C#

The following example shows what the code for the method looks like.

' Visual Basic
Private Sub Detail1_Format(ByVal sender As Object, ByVal e As System.EventArgs) Handles _
	Detail1.Format
	Dim rpt As New rptSub()
	Dim subDS As New DataDynamics.ActiveReports.DataSources.OleDBDataSource()
	subDS.ConnectionString = Me.DataSource.ConnectionString
	subDS.SQL = "Select * from products where categoryID = " + m_categoryID
	rpt.DataSource = subDS
	Me.ctlSubreport.Report = rpt
End Sub
//C#
private void detail_Format(object sender, System.EventArgs eArgs)
{
	rptSub rpt = new rptSub();
	DataDynamics.ActiveReports.DataSources.OleDBDataSource subDS = new DataDynamics.
			ActiveReports.DataSources.OleDBDataSource();
	subDS.ConnectionString = this.DataSource.ConnectionString;
	subDS.SQL = "Select * from products where categoryID = " + m_categoryID;
	rpt.DataSource = subDS;
	ctlSubReport.Report = rpt;
}

Adding code to the Detail Format event for both reports

To write the code in Visual Basic or C#

Previewing the report and Bookmarks Collection in the designer

To preview the report and Bookmarks Collection in the designer

  1. Click the "Preview" tab at the bottom of the designer.
  2. Click on the "Table of Contents" icon to view the Bookmarks collection.

Viewing the report and Bookmarks Collection at run time

To view the report at run time

  1. Add the ActiveReports viewer control to your Windows form.
  2. Add the code needed to set the viewer document equal to the report document (rptMain). See Using the ActiveReports Windows Form Viewer for help.
  3. Press F5 to run the report.
  4. Click the "Table of Contents" icon to view the Bookmarks collection.

Adding Special Bookmarks at Run Time

To create and add special bookmarks to the bookmarks collection at run time, you will need to add the bookmarks to the report document's pages collection since the bookmarks are generated from the pages collection.

' Visual Basic
Private Sub Detail1_Format(ByVal sender As Object, ByVal e As System.EventArgs) Handles _
	Detail1.Format
    Dim i As Integer
    Try
        For i = 0 To Me.Document.Pages.Count - 1
            Me.Document.Pages(1).AddBookmark("New Bookmark", 8)
        Next
    Catch ex As Exception
    End Try
End Sub
//C#
private void detail_Format(object sender, System.EventArgs eArgs) { for(int i = 0; i<Document.Pages.Count;i++) { this.Document.Pages[i].AddBookmark("New Bookmark", 25); } }
Only add bookmarks at the Page level during report processing. Do not add or remove them using the BookmarksCollection methods until after the document is completely loaded into the viewer. This is because the viewer clears the BookmarksCollection and then recreates it using the bookmarks that are contained in each individual page.

See Also

©2009. All Rights Reserved.