corelibraries-devexpress-dot-xtraprinting-42f350a4.md
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
public class BookmarkNode :
StorableObjectBase,
IBookmarkNode,
IXtraPartlyDeserializable,
IXtraSupportShouldSerializeCollectionItem,
IXtraSupportDeserializeCollectionItem
Public Class BookmarkNode
Inherits StorableObjectBase
Implements IBookmarkNode,
IXtraPartlyDeserializable,
IXtraSupportShouldSerializeCollectionItem,
IXtraSupportDeserializeCollectionItem
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.
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.
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);
}
}
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
IXtraSupportDeserializeCollectionItem
Object DevExpress.Printing.Utils.DocumentStoring.StorableObjectBase BookmarkNode
See Also