Erstellen von Feldern mit FieldBuilder
Felder erstellen mit FieldBuilder
Dieser Leitfaden zeigt, wie man ein Word-Feld von Grund auf in Aspose.Words FOSS für .NET mithilfe von FieldBuilder and FieldArgumentBuilder, anstatt mit einem Feld zu arbeiten, das bereits in einem Dokument existiert. Zum Lesen, Aktualisieren oder Entfernen vorhandener Felder siehe die Arbeiten mit Feldern Anleitung.
Ein Feld erstellen mit FieldBuilder
FieldBuilder erstellt ein Feld aus Feldcode-Token — Argumenten und Schaltern. Erstelle eines mit new FieldBuilder(fieldType), indem du das FieldType des Feldes übergibst, das du bauen möchtest. Füge Argumente mit der überladenen AddArgument(argument)-Methode hinzu, die ein string, int, double, ein verschachteltes FieldBuilder oder ein FieldArgumentBuilder akzeptiert. Schalter werden mit den überladenen AddSwitch(switchName), AddSwitch(switchName, switchArgument) (String) oder AddSwitch(switchName, switchArgument) (int/double)-Methoden hinzugefügt.
Einfügen des erstellten Feldes
Sobald ein FieldBuilder seine Argumente und Schalter hat, rufe BuildAndInsert(refNode) auf, um ihn in das Dokument einzufügen — eine Überladung akzeptiert einen Inline-Knoten und fügt das Feld davor ein, und eine andere akzeptiert ein Paragraph und fügt das Feld am Ende dieses Absatzes ein.
Komplexe Argumente zusammensetzen mit FieldArgumentBuilder
FieldArgumentBuilder erstellt ein komplexes Feldargument, das aus Feldern, Knoten und Klartext besteht, für Fälle, in denen ein einzelnes Argument mehr als einen einfachen String benötigt. Erstelle eines mit new FieldArgumentBuilder(), rufe dann AddText(text) auf, um Klartext hinzuzufügen, AddNode(node), um einen Inline-Knoten hinzuzufügen, oder AddField(fieldBuilder), um ein weiteres Feld (erstellt mit seinem eigenen FieldBuilder) im Argument zu verschachteln. Übergebe das fertiggestellte FieldArgumentBuilder an FieldBuilder.AddArgument(argument), um es als eines der Argumente des äußeren Feldes zu verwenden.
Tipps und bewährte Vorgehensweisen
- Verwende
FieldBuilder, wenn du einen Feldtyp konstruierst, der nicht von einer der dedizierten Feldklassen unterstützt wird (wieFieldDateoderFieldSymbol), oder wenn du Feldcodes programmgesteuert aus Daten generierst, anstatt sie von Hand zu erstellen. - Verschachtle ein untergeordnetes Feld innerhalb des Arguments eines äußeren Feldes mit
FieldBuilder.AddArgument(FieldBuilder)für einen einfachen Fall, oder erstelle ein gemischtes Argument aus Text, Knoten und verschachtelten Feldern mitFieldArgumentBuilder, wenn das Argument mehr als ein einzelnes Feld ist. - Wähle die
BuildAndInsert(refNode)-Überladung, die dem gewünschten Einfügeort des Feldes entspricht — vor einem bestimmtenInline-Knoten oder am Ende einesParagraph. - Nach
BuildAndInsertbehandle das Ergebnis wie jedes andere Feld im Baum — zum Beispiel rufeUpdate()darauf auf, wenn der Feldtyp eine explizite Neuberechnung erfordert.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
BuildAndInsert zielt auf den falschen Ort | Die falsche Überladung wurde für den beabsichtigten Einfügepunkt verwendet | Übergeben Sie einen Inline node, um davor einzufügen, oder ein Paragraph, um am Ende einzufügen |
| Ein Feldargument akzeptiert nicht gleichzeitig Klartext und einen node | AddArgument wurde mit einem einzelnen string/int/double anstelle eines zusammengesetzten Arguments aufgerufen | Erzeugen Sie das gemischte Argument mit FieldArgumentBuilder (AddText, AddNode, AddField) und übergeben Sie es an AddArgument |
| Der Schalterwert wird im erzeugten Feldcode nicht erkannt | AddSwitch(switchName) wurde verwendet, obwohl der Schalter tatsächlich ein Argument benötigt | Verwenden Sie die AddSwitch(switchName, switchArgument) Überladung mit dem String-, Int- oder Double-Wert des Schalters |
FAQ
Wann sollte ich FieldBuilder verwenden, anstatt einen vorgefertigten Feldcode einzufügen?
Verwenden Sie FieldBuilder, wenn Sie beim programmgesteuerten Erstellen eines Feldes explizite Kontrolle über dessen Argumente und Schalter benötigen, anstatt einen vorgefertigten Feldcode-String einzufügen.
Wie füge ich einem Feld mehr als ein Argument hinzu?
Rufen Sie AddArgument einmal pro Argument auf — es ist überladen für string, int, double, ein verschachteltes FieldBuilder und FieldArgumentBuilder.
Kann ich ein Feld erstellen, dessen Argument eine Mischung aus Text und einem anderen Feld enthält?
Ja — verwenden Sie FieldArgumentBuilder, rufen Sie bei Bedarf AddText, AddNode und AddField auf und übergeben Sie es anschließend an FieldBuilder.AddArgument.
Wie füge ich das erstellte Feld tatsächlich in das Dokument ein?
Rufen Sie BuildAndInsert(refNode) auf und übergeben entweder ein Inline-Knoten (fügt davor ein) oder ein Paragraph (fügt am Ende ein).
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
FieldBuilder | Erstellt ein Feld aus Feldcode-Token (Argumente und Schalter) |
FieldBuilder(fieldType) | Konstruktor, der das FieldType zum Erstellen entgegennimmt |
FieldBuilder.AddArgument(argument) | Fügt ein Argument hinzu (string, int, double, FieldBuilder oder FieldArgumentBuilder) |
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument) | Fügt einen Feldschalter hinzu, mit oder ohne Wert |
FieldBuilder.BuildAndInsert(refNode) | Fügt das erstellte Feld vor einem Inline-Knoten ein oder am Ende eines Paragraph |
FieldArgumentBuilder | Erstellt ein komplexes Feldargument aus Text, Knoten und verschachtelten Feldern |
FieldArgumentBuilder.AddText(text) | Fügt dem Argument einfachen Text hinzu |
FieldArgumentBuilder.AddNode(node) | Fügt dem Argument einen Inline-Knoten hinzu |
FieldArgumentBuilder.AddField(fieldBuilder) | Verschachtelt ein Feld, das von FieldBuilder erstellt wurde, im Argument |