Création de champs avec FieldBuilder

Création de champs avec FieldBuilder

Construire des champs avec FieldBuilder

Ce guide montre comment créer un champ Word à partir de zéro dans Aspose.Words FOSS pour .NET en utilisant FieldBuilder and FieldArgumentBuilder, au lieu de travailler avec un champ déjà présent dans un document. Pour lire, mettre à jour ou supprimer des champs existants, voir le Travailler avec des champs guide.


Créer un champ avec FieldBuilder

FieldBuilder crée un champ à partir de jetons de code de champ — arguments et commutateurs. Construisez-en un avec new FieldBuilder(fieldType), en passant le FieldType du champ que vous souhaitez créer. Ajoutez des arguments avec la méthode surchargée AddArgument(argument), qui accepte un string, int, double, un FieldBuilder imbriqué, ou un FieldArgumentBuilder. Ajoutez des commutateurs avec les méthodes surchargées AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string), ou AddSwitch(switchName, switchArgument) (int/double).


Insertion du champ construit

Une fois qu’un FieldBuilder possède ses arguments et commutateurs, appelez BuildAndInsert(refNode) pour l’insérer dans le document — une surcharge accepte un nœud Inline et insère le champ avant celui-ci, et une autre accepte un Paragraph et insère le champ à la fin de ce paragraphe.


Composer des arguments complexes avec FieldArgumentBuilder

FieldArgumentBuilder crée un argument de champ complexe composé de champs, de nœuds et de texte brut, pour les cas où un seul argument nécessite plus qu’une simple chaîne. Construisez-en un avec new FieldArgumentBuilder(), puis appelez AddText(text) pour ajouter du texte brut, AddNode(node) pour ajouter un nœud Inline, ou AddField(fieldBuilder) pour imbriquer un autre champ (construit avec son propre FieldBuilder) dans l’argument. Transmettez le FieldArgumentBuilder terminé à FieldBuilder.AddArgument(argument) pour l’utiliser comme l’un des arguments du champ externe.


Conseils et bonnes pratiques

  • Utilisez FieldBuilder lors de la construction d’un type de champ qui n’est pas pris en charge par l’une des classes de champs dédiées (comme FieldDate ou FieldSymbol), ou lors de la génération de codes de champ de façon programmatique à partir de données plutôt que de les créer manuellement.
  • Imbriquez un champ enfant dans l’argument d’un champ externe avec FieldBuilder.AddArgument(FieldBuilder) pour un cas simple, ou construisez un argument mixte de texte, de nœuds et de champs imbriqués avec FieldArgumentBuilder lorsque l’argument comporte plus d’un seul champ.
  • Choisissez la surcharge BuildAndInsert(refNode) qui correspond à l’endroit où vous souhaitez placer le champ — avant un nœud Inline spécifique, ou à la fin d’un Paragraph.
  • Après BuildAndInsert, traitez le résultat comme n’importe quel autre champ de l’arbre — par exemple, appelez Update() dessus si le type de champ nécessite un recalcul explicite.

Problèmes courants

ProblèmeCauseCorrection
BuildAndInsert cible le mauvais emplacementLa mauvaise surcharge a été utilisée pour le point d’insertion prévuPassez un nœud Inline pour l’insérer avant, ou un Paragraph pour l’insérer à la fin
Un argument de champ n’acceptera pas du texte brut et un nœud ensembleAddArgument a été appelé avec un seul string/int/double au lieu d’un argument composéConstruisez l’argument mixte avec FieldArgumentBuilder (AddText, AddNode, AddField) et transmettez-le à AddArgument
La valeur du switch n’est pas reconnue dans le code de champ généréAddSwitch(switchName) a été utilisé alors que le switch nécessite réellement un argumentUtilisez la surcharge AddSwitch(switchName, switchArgument) avec la valeur string, int ou double du switch

FAQ

Quand devrais-je utiliser FieldBuilder plutôt que d’insérer un code de champ pré-formé?

Utilisez FieldBuilder lorsque vous avez besoin d’un contrôle explicite sur les arguments et les commutateurs d’un champ lors de leur construction de manière programmatique, plutôt que d’insérer une chaîne de code de champ pré-formée.

Comment ajouter plus d’un argument à un champ?

Appelez AddArgument une fois par argument — il est surchargé pour string, int, double, un FieldBuilder imbriqué, et FieldArgumentBuilder.

Puis-je créer un champ dont l’argument contient un mélange de texte et d’un autre champ?

Oui — utilisez FieldArgumentBuilder, en appelant AddText, AddNode et AddField selon les besoins, puis transmettez-le à FieldBuilder.AddArgument.

Comment insérer réellement le champ construit dans le document?

Appelez BuildAndInsert(refNode), en passant soit un nœud Inline (insère avant lui), soit un Paragraph (insère à la fin).


API Reference Résumé

Classe/MéthodeDescription
FieldBuilderConstruit un champ à partir des jetons de code de champ (arguments et commutateurs)
FieldBuilder(fieldType)Constructeur prenant le FieldType à construire
FieldBuilder.AddArgument(argument)Ajoute un argument (string, int, double, FieldBuilder ou FieldArgumentBuilder)
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument)Ajoute un commutateur de champ, avec ou sans valeur
FieldBuilder.BuildAndInsert(refNode)Insère le champ construit avant un nœud Inline ou à la fin d’un Paragraph
FieldArgumentBuilderConstruit un argument de champ complexe à partir de texte, de nœuds et de champs imbriqués
FieldArgumentBuilder.AddText(text)Ajoute du texte brut à l’argument
FieldArgumentBuilder.AddNode(node)Ajoute un nœud Inline à l’argument
FieldArgumentBuilder.AddField(fieldBuilder)Imbrique un champ construit par FieldBuilder dans l’argument

Voir aussi

 Français