Construirea câmpurilor cu FieldBuilder
Construirea câmpurilor cu FieldBuilder
Acest ghid arată cum să construiești un câmp Word de la zero în Aspose.Words FOSS pentru .NET utilizând FieldBuilder and FieldArgumentBuilder, în loc să lucrezi cu un câmp care există deja într-un document. Pentru citirea, actualizarea sau eliminarea câmpurilor existente, vezi Lucrul cu câmpuri ghidul.
Crearea unui câmp cu FieldBuilder
FieldBuilder construiește un câmp din tokenuri de cod de câmp — argumente și comutatoare. Construiți unul cu new FieldBuilder(fieldType), trecând FieldType al câmpului pe care doriți să-l construiți. Adăugați argumente cu metoda suprascrisă AddArgument(argument), care acceptă un string, int, double, un FieldBuilder imbricat, sau un FieldArgumentBuilder. Adăugați comutatoare cu metodele suprascrise AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string), sau AddSwitch(switchName, switchArgument) (int/double).
Inserarea câmpului construit
Odată ce un FieldBuilder are argumentele și comutatoarele sale, apelați BuildAndInsert(refNode) pentru a-l insera în document — o suprasarcină acceptă un nod Inline și inserează câmpul înainte de acesta, iar alta acceptă un Paragraph și inserează câmpul la sfârșitul acelui paragraf.
Compunerea argumentelor complexe cu FieldArgumentBuilder
FieldArgumentBuilder construiește un argument de câmp complex format din câmpuri, noduri și text simplu, pentru cazurile în care un singur argument are nevoie de mai mult decât un șir simplu. Construiește unul cu new FieldArgumentBuilder(), apoi apelează AddText(text) pentru a adăuga text simplu, AddNode(node) pentru a adăuga un nod Inline, sau AddField(fieldBuilder) pentru a încorpora un alt câmp (construit cu propriul său FieldBuilder) în interiorul argumentului. Transmite FieldArgumentBuilder finalizat către FieldBuilder.AddArgument(argument) pentru a-l folosi ca unul dintre argumentele câmpului exterior.
Sfaturi și cele mai bune practici
- Folosește
FieldBuildercând construiești un tip de câmp care nu este susținut de una dintre clasele dedicate de câmp (cum ar fiFieldDatesauFieldSymbol), sau când generezi coduri de câmp programatic din date în loc să le scrii manual. - Încadrează un câmp copil în argumentul unui câmp exterior cu
FieldBuilder.AddArgument(FieldBuilder)pentru un caz simplu, sau construiește un argument mixt de text, noduri și câmpuri încorporate cuFieldArgumentBuildercând argumentul este mai mult decât un singur câmp. - Alege supraîncărcarea
BuildAndInsert(refNode)care corespunde locului în care vrei să se plaseze câmpul — înainte de un nodInlinespecific sau la sfârșitul unuiParagraph. - După
BuildAndInsert, tratează rezultatul ca pe orice alt câmp din arbore — de exemplu, apeleazăUpdate()pe el dacă tipul de câmp necesită o recalculare explicită.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
BuildAndInsert vizează locația greșită | Supraincarcarea greșită a fost utilizată pentru punctul de inserare dorit | Transmite un nod Inline pentru a-l insera înainte, sau un Paragraph pentru a-l insera la sfârșitul său |
| Un argument de câmp nu va accepta text simplu și un nod simultan | AddArgument a fost apelat cu un singur string/int/double în loc de un argument compus | Construiește argumentul mixt cu FieldArgumentBuilder (AddText, AddNode, AddField) și transmite-l către AddArgument |
| Valoarea comutatorului nu este recunoscută în codul de câmp construit | AddSwitch(switchName) a fost utilizat când comutatorul are de fapt nevoie de un argument | Folosește supraincarcarea AddSwitch(switchName, switchArgument) cu valoarea string, int sau double a comutatorului |
FAQ
Când ar trebui să folosesc FieldBuilder în loc să inserez un cod de câmp preformat?
Folosește FieldBuilder când ai nevoie de control explicit asupra argumentelor și comutatoarelor unui câmp în timp ce le construiești programatic, în loc să inserezi un șir de cod de câmp preformat.
Cum pot adăuga mai mult de un argument la un câmp?
Apelează AddArgument o dată pentru fiecare argument — este supraîncărcat pentru string, int, double, un FieldBuilder înglobat și FieldArgumentBuilder.
Pot să construiesc un câmp al cărui argument conține un amestec de text și un alt câmp?
Da — folosește FieldArgumentBuilder, apelând AddText, AddNode și AddField după cum este necesar, apoi transmite-l lui FieldBuilder.AddArgument.
Cum pot să introduc efectiv câmpul construit în document?
Apelează BuildAndInsert(refNode), trecând fie un nod Inline (inserează înainte de el), fie un Paragraph (inserează la sfârșitul lui).
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
FieldBuilder | Construiește un câmp din token-urile de cod de câmp (argumente și comutatoare) |
FieldBuilder(fieldType) | Constructor care primește FieldType pentru a construi |
FieldBuilder.AddArgument(argument) | Adaugă un argument (string, int, double, FieldBuilder sau FieldArgumentBuilder) |
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument) | Adaugă un comutator de câmp, cu sau fără o valoare |
FieldBuilder.BuildAndInsert(refNode) | Inserează câmpul construit înainte de un nod Inline sau la sfârșitul unui Paragraph |
FieldArgumentBuilder | Construiește un argument complex de câmp din text, noduri și câmpuri imbricate |
FieldArgumentBuilder.AddText(text) | Adaugă text simplu la argument |
FieldArgumentBuilder.AddNode(node) | Adaugă un nod Inline la argument |
FieldArgumentBuilder.AddField(fieldBuilder) | Încorporează un câmp construit de FieldBuilder în argument |