Werken met bewerkbare bereiken
Werken met bewerkbare bereiken
Deze gids toont hoe je bewerkbare bereiken kunt inspecteren en verwijderen – de regio’s die de functie “Restrict Editing” van Word uitsluit van de algemene bewerkingsbeperking van een document, eventueel beperkt tot een specifieke gebruiker of groep – in Aspose.Words FOSS voor .NET. Een bewerkbaar bereik wordt ingesloten in de documentboom door een paar markerknopen, EditableRangeStart and EditableRangeEnd, en wordt als geheel beschreven door de EditableRange facade-klasse.
Bewerkbare bereiken vinden in een document
Er is geen enkele verzamelings-eigenschap voor bewerkbare bereiken; vind ze door de knooppuntboom te doorlopen. CompositeNode.GetChildNodes(nodeType, isDeep) met NodeType.EditableRangeStart retourneert elk EditableRangeStart knooppunt in het document (of in een subtree, als het wordt aangeroepen op een knooppunt anders dan Document). Elke EditableRangeStart.EditableRange eigenschap geeft vervolgens het bijbehorende EditableRange façade-object terug.
De EditableRange façade
EditableRange beschrijft een enkel bewerkbaar bereik als geheel: Id identificeert het, SingleUser geeft optioneel een specifieke gebruiker aan die het mag bewerken, en EditorGroup (een EditorType waarde) geeft optioneel in plaats daarvan een bewerkingsgroep aan. EditableRangeStart en EditableRangeEnd retourneren het paar markerknopen dat het bereik in het document omsluit. EditableRange.Remove() verwijdert het bewerkbare bereik – waardoor de vrijstelling van de bewerkingsbeperking voor dat gebied wordt opgeheven, zonder de documentinhoud erin te verwijderen.
De markerknopen: EditableRangeStart en EditableRangeEnd
EditableRangeStart en EditableRangeEnd zijn verzegelde Node subklassen die de grenzen van een bereik in de inhoudsstroom van het document markeren. EditableRangeStart.Id en EditableRangeEnd.Id identificeren het bereik; EditableRangeStart.EditableRange bereikt het facade-object direct, en EditableRangeEnd.EditableRangeStart gaat terug naar de bijbehorende startmarker. Als gewone knooppunten ondersteunen beide de standaard Node leden — ParentNode, Document, PreviousSibling, NextSibling en Remove() om de individuele marker te verwijderen.
Toegang beperken met EditorType
EditorType somt de bewerkingsgroepen op die een EditableRange.EditorGroup kan refereren: Administrators, Contributors, Editors, Owners, Everyone, Current, None en Unspecified (ook beschikbaar als Default, een alias voor Unspecified).
Tips en best practices
- Gebruik
GetChildNodes(NodeType.EditableRangeStart, true)metisDeep: trueom bewerkbare bereiken overal in het document te vinden, niet alleen onder de directe kinderen van een knooppunt. - Lees
EditableRange.SingleUserenEditorGroupsamen om te bepalen voor wie een bereik is beperkt — een bereik kan beperkt zijn tot één specifieke gebruiker, één bewerkingsgroep, of geen van beide. - Roep
EditableRange.Remove()(op de facade) aan in plaats van deEditableRangeStartenEditableRangeEndmarkerknopen afzonderlijk te verwijderen, zodat beide uiteinden van het bereik consequent worden opgeschoond.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Er zijn geen bewerkbare bereiken gevonden, zelfs al heeft het document beperkte bewerking | Zoekopdracht gebruikte de standaard (ondiepe) GetChildNodes aanroep | Geef isDeep: true door zodat de zoekopdracht de volledige documentsubboom bestrijkt |
| Het verwijderen van een bewerkbaar bereik verwijdert de ingesloten tekst niet | EditableRange.Remove() verwijdert alleen de bereikmarkeringen en de bewerkingsvrijstelling, niet de inhoud ertussen | Dit is verwacht – verwijder de inhoud apart als deze ook verwijderd moet worden |
EditorGroup wordt gelezen als Unspecified, hoewel Word een benoemde groep toont | De editor-groep van het bereik in het brondocument wordt gemapt naar EditorType.Unspecified/Default in plaats van naar een van de benoemde groepswaarden | Controleer SingleUser ook – het bereik kan in plaats daarvan beperkt zijn tot een individuele gebruiker |
FAQ
Hoe vind ik alle bewerkbare bereiken in een document?
Roep Document.GetChildNodes(NodeType.EditableRangeStart, true) aan, lees vervolgens de EditableRange eigenschap op elk EditableRangeStart knooppunt dat wordt geretourneerd.
Hoe kan ik zien wie een bepaald bereik mag bewerken?
Lees EditableRange.SingleUser (een specifieke gebruiker) en EditableRange.EditorGroup (een EditorType bewerkingsgroep) op het facade-object.
Hoe verwijder ik een bewerkingsbeperking van een deel van een document?
Roep Remove() aan op het EditableRange façade-object voor dat bereik.
Wat is het verschil tussen EditableRangeStart.EditableRange en EditableRangeEnd.EditableRangeStart?
EditableRangeStart.EditableRange bereikt het facade-object dat de volledige reeks direct beschrijft. EditableRangeEnd.EditableRangeStart gaat terug naar het overeenkomstige start-markeringsknooppunt, van waaruit EditableRange vervolgens kan worden bereikt.
API Reference Samenvatting
| Klasse / Enum | Beschrijving |
|---|---|
EditableRange | Facade voor één bewerkbaar bereik: Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | Node die het begin van een bereik markeert; Id, EditableRange |
EditableRangeEnd | Node die het einde van een bereik markeert; Id, EditableRangeStart |
EditorType | Enum van bewerkingsgroepen: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |