Allow the custom fields inserted in a child document, like header/footer/comment etc, to access properties from the main document of RadRichTextBox.
Hi, The feedback portal is used to discuss particular issues or requests for new functionalities. Please, post any technical questions you might have in the support system so the support team can handle them appropriately. Thank you for understanding. Regards, Tanya
Hi every body ....
I use RadRichTextBox in the following manner: first page is used (by the user) as a cover letter so that it is not included within the total count of pages. Footer of every page except first page should display page number x from y, where x is the current page number (after the first page), and y is the total number of pages minus one (the first page).
I could achieve the first value of the formatted footer using CodeBasedField, but unfortunately I couldn't modify the value returned by NumPagesField.
My question is how to modify value returned by NumPagesField so that I can display total number of pages minus one. Below there is an attachment of an image to show my requirement.
The following is my code snippet used in creating the custom footer:
Public Function FirstTemplate() As RadDocument
Dim section As New Section()
section.HasDifferentFirstPageHeaderFooter = True
section.Footers.[Default] = New Footer With {.Body = ReportFooter()}
End Function
Private Function ReportFooter() As RadDocument
Dim footerDoc As New RadDocument
Dim footerSection As New Section
Dim footerParagraph As New Paragraph
Dim footerDocumentEditor As New RadDocumentEditor(footerDoc)
footerParagraph.TextAlignment = RadTextAlignment.Center
footerDoc.Sections.Add(footerSection)
footerSection.Blocks.Add(footerParagraph)
footerDocumentEditor.InsertField(New FormattedPageNumber, FieldDisplayMode.Result)
Return footerDoc
End Function
Public Class FormattedPageNumber
Inherits CodeBasedField
Public Shared ReadOnly FieldType As String = "FormattedPageNUM"
Shared Sub New()
CodeBasedFieldFactory.RegisterFieldType(FormattedPageNumber.FieldType, Function()
Return New FormattedPageNumber()
End Function)
End Sub
Public Overrides ReadOnly Property FieldTypeName() As String
Get
Return FormattedPageNumber.FieldType
End Get
End Property
Protected Overrides Function GetResultFragment() As DocumentFragment
Dim pageNumber As Integer = 0
Dim pagesCount As Integer = 0
If Me.Document IsNot Nothing Then
Dim position As New DocumentPosition(Me.Document)
position.MoveToStartOfDocumentElement(Me.FieldStart)
Dim sectionBox As SectionLayoutBox = position.GetCurrentSectionBox()
pageNumber = sectionBox.PageNumber
pagesCount = DocumentStructureCollection.GetChildrenCount(Me.Document.DocumentLayoutBox)
End If
Dim resultString As String = "Page " & pageNumber - 1 & " From " & pagesCount -1
Return MyBase.CreateFragmentFromText(resultString)
End Function
Public Overrides Function CreateInstance() As Field
Return New FormattedPageNumber()
End Function
End Class
In code above; the problem is pagesCount always returns zero.
As I could understand, this behavior was the result of implementation being used within the footer, and hence telerik team added NumPagesField, so that it could be used within the footer. But how could I modify it, or is their another way to access properties of parent document from footer????