Hi Telerik Forum,
I'd like to put a bookmark (or another marker) on severals fragment doc (inserted programmatically into the radrichtexteditor) in order to easily select them / delete them / replace the whole text/table inside them. I tried to use textrange object in order to do it but without success.
I don't know what's the best approach to do theses actions above.
Some precision about my app :
* my paragraphs text comes from database in html format, so i use htmlprovider to insert them into my final document
* user can modify paragraph with different buttons in order to change the defaults paragraphs generated before
Thx for your help :)
Here's my sample code :
Shared
Sub
GenerateDocument(rte
As
RadRichTextEditor)
Dim
document =
New
RadDocument()
rte.Document = document
Dim
htmlProvider =
New
HtmlFormatProvider()
Dim
parHtml1 =
"<span>Start of Paragrah1</span><br/><table style='border:1px solid black'><tr><td>Desc.</td><td>Value</td></tr><tr><td>Variable1</td><td>10.23</td></tr></table>Some text after the table<br/><span>End of Paragrah1</span><br/>"
Dim
parHtml2 =
"<span>Start of Paragrah2</span><br/>Some text before creating table<table style='border:1px solid black'><tr><td>Desc.</td><td>Value</td></tr><tr><td>Variable2</td><td>50.18</td></tr></table><br/><span>End of Paragrah2</span><br/>"
'Converting html to raddoc
Dim
docPar1 = htmlProvider.Import(parHtml1)
Dim
docPar2 = htmlProvider.Import(parHtml2)
'Creating fragments
Dim
fragmentPar1 =
New
DocumentFragment(docPar1)
Dim
fragmentPar2 =
New
DocumentFragment(docPar2)
Dim
documentEditor
As
New
RadDocumentEditor(document)
'Inserting paragraph 1
rte.Document.CaretPosition.MoveToLastPositionInDocument()
documentEditor.InsertBookmark(
"bookmarkPar1"
)
documentEditor.InsertFragment(fragmentPar1)
'Inserting paragraph 2
rte.Document.CaretPosition.MoveToLastPositionInDocument()
documentEditor.InsertBookmark(
"bookmarkPar2"
)
documentEditor.InsertFragment(fragmentPar2)
'Trying of selecting / delete / replace all content in specified bookmark (that doesn't work)
SelectAndUpdateContentBookmark(
"bookmarkPar1"
, rte,
String
.Empty)
'only select
SelectAndUpdateContentBookmark(
"bookmarkPar2"
, rte,
"New content"
)
'select and replace with new text
End
Sub
Shared
Sub
SelectAndUpdateContentBookmark(
ByVal
bookmarkName
As
String
, rte
As
RadRichTextEditor, newContent
As
String
)
rte.Focus()
Dim
bookmarks()
As
BookmarkRangeStart = rte.Document.GetAllBookmarks().ToArray()
Dim
posstart
As
New
DocumentPosition(rte.Document)
Dim
posend
As
New
DocumentPosition(rte.Document)
Dim
item = bookmarks.Where(
Function
(x) x.Name = bookmarkName).FirstOrDefault
If
item IsNot
Nothing
Then
rte.Document.GoToBookmark(item)
posstart.MoveToInline(TryCast(item.FirstLayoutBox, InlineLayoutBox), 0)
posend.MoveToInline(TryCast(item.
End
.FirstLayoutBox, InlineLayoutBox), 0)
posstart.MoveToNextInline()
rte.Document.Selection.SetSelectionStart(posstart)
rte.Document.Selection.AddSelectionEnd(posend)
'Replacing with new content
If
Not
String
.IsNullOrEmpty(newContent)
Then
rte.Delete(
False
)
rte.Insert(newContent)
End
If
End
If
End
Sub