Back to Devexpress

BookmarkNode Class

corelibraries-devexpress-dot-xtraprinting-42f350a4.md

latest7.3 KB
Original Source

BookmarkNode Class

Represents a bookmark shown in the report’s document map.

Namespace : DevExpress.XtraPrinting

Assembly : DevExpress.Printing.v25.2.Core.dll

NuGet Package : DevExpress.Printing.Core

Declaration

csharp
public class BookmarkNode :
    StorableObjectBase,
    IBookmarkNode,
    IXtraPartlyDeserializable,
    IXtraSupportShouldSerializeCollectionItem,
    IXtraSupportDeserializeCollectionItem
vb
Public Class BookmarkNode
    Inherits StorableObjectBase
    Implements IBookmarkNode,
               IXtraPartlyDeserializable,
               IXtraSupportShouldSerializeCollectionItem,
               IXtraSupportDeserializeCollectionItem

Remarks

Note that all the options of a bookmark can be set only when it’s created via the BookmarkNode object’s constructor. After a bookmark has been created, it can be added to the collection of bookmarks by calling the collection’s Add method. Use the BookmarkDuplicateSuppress property to remove duplicate bookmarks.

Note

BookmarkDuplicateSuppress removes only the bookmarks that are duplicated consecutively in the same group section.

Populate the BookmarkNodes collection with your bookmark nodes manually to remove duplicates throughout the report document.

Example

This example illustrates how to make Print Preview display a Document Map listing all bookmarks assigned to a Document‘s elements.

The following code adds five bricks to the Detail section of a document and then assigns bookmarks to each brick.

Note that the Document Map button is automatically enabled in Print Preview when a displayed document has any bookmarks.

csharp
using System;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraPrinting;
using DevExpress.XtraPrinting.Native;
// ...
        private void button1_Click(object sender, EventArgs e) {
            // Create a new Printing System.
            PrintingSystem ps = new PrintingSystem();

            // Create a new link and add a handler to its CreateDetailArea event.
            Link link = new Link(ps);
            link.CreateDetailArea += new CreateAreaEventHandler(OnDocumentCreated);

            // Create a document for the link.
            link.CreateDocument();

            // Create a document's map.
            CreateDocumentMap(ps.Document);

            // Show the report's preview.
            link.ShowPreview();

            // Remove the handler for the CreateDetailArea event.
            link.CreateDetailArea -= new CreateAreaEventHandler(OnDocumentCreated);
        }

        private void OnDocumentCreated(object sender, CreateAreaEventArgs e) {
            // Draw 5 bricks on a document.
            for (int i = 0; i < 5; i++) {
                TextBrick brick = new TextBrick();
                brick.Text = "Item #" + (i + 1).ToString();
                brick.BackColor = Color.Yellow;
                brick.Rect = new Rectangle(10, i * 100, 100, 50);
                e.Graph.DrawBrick(brick, brick.Rect);
            }
        }

        private void CreateDocumentMap(Document document) {
            // Create a collection of 'Page and Brick' pairs.
            BrickPagePairCollection pairs = new BrickPagePairCollection();

            // Create an enumerator of all document bricks.
            DocumentBrickEnumerator en = new DocumentBrickEnumerator(document);

            // Add the 'Brick-Page' pairs for all document bricks.
            while (en.MoveNext()) {
                pairs.Add(BrickPagePair.Create(en.Brick, en.Page));
            }

            // Add bookmarks for all pairs to the document's map.
            foreach (BrickPagePair pair in pairs) {
                Page page = document.Pages[pair.PageIndex];

                Brick brick = page.GetBrickByIndices(pair.BrickIndices) as Brick;
                string BrickText = ((TextBrick)brick).Text;
                BookmarkNode mapNode = new BookmarkNode(BrickText, brick, page);
                document.BookmarkNodes.Add(mapNode);
            }
        }
vb
Imports System.Drawing
Imports System.Windows.Forms
Imports DevExpress.XtraPrinting
Imports DevExpress.XtraPrinting.Native
' ...
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' Create a new Printing System.
        Dim ps As New PrintingSystem()

        ' Create a new link and add a handler to its CreateDetailArea event.
        Dim link As New Link(ps)
        AddHandler link.CreateDetailArea, AddressOf OnDocumentCreated

        ' Create a document for the link.
        link.CreateDocument()

        ' Create a document's map.
        CreateDocumentMap(ps.Document)

        ' Show the report's preview.
        link.ShowPreview()
    End Sub

    Private Sub OnDocumentCreated(ByVal sender As Object, ByVal e As CreateAreaEventArgs)
        ' Draw 5 bricks on a document.
        For i As Integer = 0 To 4
            Dim brick As New TextBrick()
            brick.Text = "Item #" & (i + 1).ToString()
            brick.BackColor = Color.Yellow
            brick.Rect = New Rectangle(10, i * 100, 100, 50)
            e.Graph.DrawBrick(brick, brick.Rect)
        Next i
    End Sub

    Private Sub CreateDocumentMap(ByVal document As Document)
        ' Create a collection of 'Page and Brick' pairs.
        Dim Pairs As New BrickPagePairCollection()

        ' Create an enumerator of all document bricks.
        Dim en As New DocumentBrickEnumerator(document)

        ' Add the 'Brick-Page' pairs for all document bricks.
        While en.MoveNext()
            Pairs.Add(BrickPagePair.Create(en.Brick, en.Page))
        End While

        ' Add bookmarks for all pairs to the document's map.
        Dim Pair As BrickPagePair
        For Each Pair In Pairs
            Dim page As Page = document.Pages(Pair.PageIndex)
            Dim brick As Brick = CType(page.GetBrickByIndices(Pair.BrickIndices), Brick)
            Dim BrickText As String = CType(brick, TextBrick).Text
            Dim mapNode As New BookmarkNode(BrickText, brick, page)
            document.BookmarkNodes.Add(mapNode)
        Next
    End Sub

Implements

IXtraSupportDeserializeCollectionItem

Inheritance

Object DevExpress.Printing.Utils.DocumentStoring.StorableObjectBase BookmarkNode

See Also

BookmarkNode Members

BookmarkNodeCollection

DevExpress.XtraPrinting Namespace