Bygga fält med FieldBuilder
Bygga fält med FieldBuilder
Den här guiden visar hur man konstruerar ett Word-fält från grunden i Aspose.Words FOSS för .NET med hjälp av FieldBuilder and FieldArgumentBuilder, istället för att arbeta med ett fält som redan finns i ett dokument. För att läsa, uppdatera eller ta bort befintliga fält, se Arbeta med fält guiden.
Skapa ett fält med FieldBuilder
FieldBuilder bygger ett fält från fältkodstoken — argument och switchar. Konstruera ett med new FieldBuilder(fieldType) och ange FieldType för det fält du vill bygga. Lägg till argument med den överlagrade AddArgument(argument)-metoden, som accepterar en string, int, double, en nästlad FieldBuilder eller en FieldArgumentBuilder. Lägg till switchar med de överlagrade AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string) eller AddSwitch(switchName, switchArgument) (int/double)-metoderna.
Infoga det byggda fältet
När ett FieldBuilder har sina argument och switchar, anropa BuildAndInsert(refNode) för att infoga det i dokumentet — en överlagring accepterar en Inline-nod och infogar fältet före den, och en annan accepterar en Paragraph och infogar fältet i slutet av det stycket.
Sammansätta komplexa argument med FieldArgumentBuilder
FieldArgumentBuilder bygger ett komplext fältargument bestående av fält, noder och vanlig text, för fall där ett enda argument behöver mer än en enkel sträng. Skapa ett med new FieldArgumentBuilder(), anropa sedan AddText(text) för att lägga till vanlig text, AddNode(node) för att lägga till en Inline nod, eller AddField(fieldBuilder) för att nästla ett annat fält (byggt med sin egen FieldBuilder) i argumentet. Skicka det färdiga FieldArgumentBuilder till FieldBuilder.AddArgument(argument) för att använda det som ett av det yttre fältets argument.
Tips och bästa praxis
- Använd
FieldBuildernär du konstruerar en fälttyp som inte stöds av någon av de dedikerade fältklasserna (såsomFieldDateellerFieldSymbol), eller när du genererar fältkoder programatiskt från data istället för att skriva dem för hand. - Nästla ett underfält i ett yttre fälts argument med
FieldBuilder.AddArgument(FieldBuilder)för ett enkelt fall, eller bygg ett blandat argument av text, noder och nästlade fält medFieldArgumentBuildernär argumentet är mer än ett enda fält. - Välj den
BuildAndInsert(refNode)överlagring som matchar där du vill placera fältet — före en specifikInlinenod, eller i slutet av enParagraph. - Efter
BuildAndInsertbehandla resultatet som vilket annat fält som helst i trädet — till exempel, anropaUpdate()på det om fälttypen kräver en explicit omberäkning.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
BuildAndInsert riktar in sig på fel plats | Fel overload användes för den avsedda infogningspunkten | Skicka en Inline-nod för att infoga före den, eller en Paragraph för att infoga i slutet |
| Ett fältargument accepterar inte vanlig text och en nod samtidigt | AddArgument anropades med en enda string/int/double istället för ett sammansatt argument | Bygg det blandade argumentet med FieldArgumentBuilder (AddText, AddNode, AddField) och skicka det till AddArgument |
| Switch-värdet känns inte igen i den byggda fältkoden | AddSwitch(switchName) användes när switchen faktiskt behöver ett argument | Använd AddSwitch(switchName, switchArgument)-overloaden med switchens sträng-, int- eller double-värde |
FAQ
När bör jag använda FieldBuilder istället för att infoga en förformad fältkod?
Använd FieldBuilder när du behöver explicit kontroll över ett fälts argument och växlar när du konstruerar dem programmässigt, snarare än att infoga en förformad fältkodsträng.
Hur lägger jag till fler än ett argument till ett fält?
Anropa AddArgument en gång per argument — den är överlagrad för string, int, double, en nästlad FieldBuilder och FieldArgumentBuilder.
Kan jag skapa ett fält vars argument innehåller en blandning av text och ett annat fält?
Ja — använd FieldArgumentBuilder, anropa AddText, AddNode och AddField efter behov, och skicka sedan det till FieldBuilder.AddArgument.
Hur lägger jag faktiskt in det byggda fältet i dokumentet?
Anropa BuildAndInsert(refNode), och skicka antingen en Inline-nod (infogar före den) eller en Paragraph (infogar i slutet av den).
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
FieldBuilder | Bygger ett fält från fältkodstoken (argument och flaggor) |
FieldBuilder(fieldType) | Konstruktor som tar FieldType för att bygga |
FieldBuilder.AddArgument(argument) | Lägger till ett argument (string, int, double, FieldBuilder eller FieldArgumentBuilder) |
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument) | Lägger till en fältväxel, med eller utan ett värde |
FieldBuilder.BuildAndInsert(refNode) | Infogar det byggda fältet före en Inline nod eller i slutet av en Paragraph |
FieldArgumentBuilder | Bygger ett komplext fältargument från text, noder och nästlade fält |
FieldArgumentBuilder.AddText(text) | Lägger till vanlig text till argumentet |
FieldArgumentBuilder.AddNode(node) | Lägger till en Inline-nod till argumentet |
FieldArgumentBuilder.AddField(fieldBuilder) | Inbäddar ett fält som byggts av FieldBuilder i argumentet |