Velden bouwen met FieldBuilder
Velden bouwen met FieldBuilder
Deze gids laat zien hoe je een Word-veld vanaf nul kunt construeren in Aspose.Words FOSS voor .NET met behulp van FieldBuilder and FieldArgumentBuilder, in plaats van te werken met een veld dat al bestaat in een document. Voor het lezen, bijwerken of verwijderen van bestaande velden, zie de Werken met velden gids.
Een veld maken met FieldBuilder
FieldBuilder bouwt een veld op basis van veldcode-tokens — argumenten en schakelaars. Maak er één met new FieldBuilder(fieldType), waarbij je de FieldType van het veld dat je wilt bouwen doorgeeft. Voeg argumenten toe met de overladen AddArgument(argument)-methode, die een string, int, double, een geneste FieldBuilder of een FieldArgumentBuilder accepteert. Voeg schakelaars toe met de overladen AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string) of AddSwitch(switchName, switchArgument) (int/double) methoden.
Het opgebouwde veld invoegen
Zodra een FieldBuilder zijn argumenten en schakelaars heeft, roep je BuildAndInsert(refNode) aan om het in het document in te voegen — de ene overload accepteert een Inline-knooppunt en voegt het veld ervoor in, en de andere accepteert een Paragraph en voegt het veld aan het einde van die alinea in.
Complexe argumenten samenstellen met FieldArgumentBuilder
FieldArgumentBuilder bouwt een complex veldargument bestaande uit velden, knooppunten en platte tekst, voor gevallen waarin een enkel argument meer nodig heeft dan een eenvoudige tekenreeks. Maak er één met new FieldArgumentBuilder(), roep vervolgens AddText(text) aan om platte tekst toe te voegen, AddNode(node) om een Inline knooppunt toe te voegen, of AddField(fieldBuilder) om een ander veld (gebouwd met zijn eigen FieldBuilder) te nesten binnen het argument. Geef het voltooide FieldArgumentBuilder door aan FieldBuilder.AddArgument(argument) om het te gebruiken als een van de argumenten van het buitenste veld.
Tips en beste praktijken
- Gebruik
FieldBuilderbij het construeren van een veldtype dat niet wordt ondersteund door een van de gespecialiseerde veldklassen (zoalsFieldDateofFieldSymbol), of wanneer je veldcodes programmatisch genereert vanuit gegevens in plaats van ze handmatig te schrijven. - Nest een subveld binnen een argument van een buitenste veld met
FieldBuilder.AddArgument(FieldBuilder)voor een eenvoudig geval, of bouw een gemengd argument van tekst, knooppunten en geneste velden metFieldArgumentBuilderwanneer het argument meer is dan één enkel veld. - Kies de
BuildAndInsert(refNode)overload die overeenkomt met de gewenste plaats voor het veld — vóór een specifiekInlineknooppunt, of aan het einde van eenParagraph. - Na
BuildAndInsertbehandel je het resultaat als elk ander veld in de boom — roep bijvoorbeeldUpdate()erop aan als het veldtype een expliciete herberekening vereist.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
BuildAndInsert richt zich op de verkeerde locatie | De verkeerde overload werd gebruikt voor het beoogde invoegpunt | Geef een Inline node door om ervoor in te voegen, of een Paragraph om aan het einde ervan in te voegen |
| Een veldargument accepteert geen platte tekst en een node tegelijk | AddArgument werd aangeroepen met een enkele string/int/double in plaats van een samengesteld argument | Bouw het gemengde argument op met FieldArgumentBuilder (AddText, AddNode, AddField) en geef dat door aan AddArgument |
| Schakelwaarde wordt niet herkend in de gegenereerde veldcode | AddSwitch(switchName) werd gebruikt terwijl de schakel eigenlijk een argument nodig heeft | Gebruik de AddSwitch(switchName, switchArgument) overload met de string-, int- of double-waarde van de schakel |
FAQ
Wanneer moet ik FieldBuilder gebruiken in plaats van een vooraf gevormde veldcode in te voegen?
Gebruik FieldBuilder wanneer je expliciete controle nodig hebt over de argumenten en schakelaars van een veld terwijl je ze programmatisch opbouwt, in plaats van een vooraf gevormde veldcode-string in te voegen.
Hoe voeg ik meer dan één argument toe aan een veld?
Roep AddArgument één keer per argument aan — hij is overladen voor string, int, double, een geneste FieldBuilder en FieldArgumentBuilder.
Kan ik een veld bouwen waarvan het argument een mix van tekst en een ander veld bevat?
Ja — gebruik FieldArgumentBuilder, roep AddText, AddNode en AddField naar behoefte aan, en geef het vervolgens door aan FieldBuilder.AddArgument.
Hoe plaats ik het gebouwde veld daadwerkelijk in het document?
Roep BuildAndInsert(refNode) aan, waarbij je een Inline-knooppunt (voegt ervoor in) of een Paragraph (voegt er aan het einde in) doorgeeft.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
FieldBuilder | Bouwt een veld op uit veldcode-tokens (argumenten en schakelaars) |
FieldBuilder(fieldType) | Constructor die de FieldType neemt om te bouwen |
FieldBuilder.AddArgument(argument) | Voegt een argument toe (string, int, double, FieldBuilder of FieldArgumentBuilder) |
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument) | Voegt een veldschakelaar toe, met of zonder een waarde |
FieldBuilder.BuildAndInsert(refNode) | Voegt het gebouwde veld in vóór een Inline knooppunt of aan het einde van een Paragraph |
FieldArgumentBuilder | Bouwt een complex veldargument op uit tekst, knooppunten en geneste velden |
FieldArgumentBuilder.AddText(text) | Voegt platte tekst toe aan het argument |
FieldArgumentBuilder.AddNode(node) | Voegt een Inline node toe aan het argument |
FieldArgumentBuilder.AddField(fieldBuilder) | Nestelt een veld dat is gebouwd door FieldBuilder in het argument |