Budowanie pól przy użyciu FieldBuilder
Tworzenie pól za pomocą FieldBuilder
Ten przewodnik pokazuje, jak od podstaw skonstruować pole Word w Aspose.Words FOSS dla .NET używając FieldBuilder and FieldArgumentBuilder, zamiast pracować z polem, które już istnieje w dokumencie. Aby odczytać, zaktualizować lub usunąć istniejące pola, zobacz Praca z polami przewodnik.
Tworzenie pola za pomocą FieldBuilder
FieldBuilder tworzy pole z tokenów kodu pola — argumentów i przełączników. Utwórz je za pomocą new FieldBuilder(fieldType), przekazując FieldType pola, które chcesz zbudować. Dodaj argumenty przy użyciu przeciążonej metody AddArgument(argument), która przyjmuje string, int, double, zagnieżdżony FieldBuilder lub FieldArgumentBuilder. Dodaj przełączniki przy użyciu przeciążonych metod AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string) lub AddSwitch(switchName, switchArgument) (int/double).
Wstawianie zbudowanego pola
Gdy FieldBuilder posiada swoje argumenty i przełączniki, wywołaj BuildAndInsert(refNode), aby wstawić je do dokumentu — jedno przeciążenie przyjmuje węzeł Inline i wstawia pole przed nim, a drugie przyjmuje Paragraph i wstawia pole na końcu tego akapitu.
Tworzenie złożonych argumentów za pomocą FieldArgumentBuilder
FieldArgumentBuilder tworzy złożony argument pola składający się z pól, węzłów i zwykłego tekstu, w przypadkach, gdy pojedynczy argument wymaga więcej niż zwykłego ciągu znaków. Utwórz go za pomocą new FieldArgumentBuilder(), a następnie wywołaj AddText(text), aby dodać zwykły tekst, AddNode(node), aby dodać węzeł Inline, lub AddField(fieldBuilder), aby zagnieździć inne pole (zbudowane przy użyciu własnego FieldBuilder) wewnątrz argumentu. Przekaż gotowy FieldArgumentBuilder do FieldBuilder.AddArgument(argument), aby użyć go jako jednego z argumentów pola zewnętrznego.
Wskazówki i najlepsze praktyki
- Użyj
FieldBuilder, gdy tworzysz typ pola, który nie jest obsługiwany przez jedną z dedykowanych klas pól (takich jakFieldDatelubFieldSymbol), lub gdy generujesz kody pól programowo na podstawie danych, zamiast ręcznie je tworzyć. - Zagnieźdź pole podrzędne wewnątrz argumentu pola zewnętrznego przy użyciu
FieldBuilder.AddArgument(FieldBuilder)w prostym przypadku, lub zbuduj mieszany argument tekstu, węzłów i zagnieżdżonych pól przy pomocyFieldArgumentBuilder, gdy argument obejmuje więcej niż jedno pole. - Wybierz przeciążenie
BuildAndInsert(refNode), które odpowiada miejscu, w którym ma się znaleźć pole — przed określonym węzłemInlinelub na końcuParagraph. - Po
BuildAndInserttraktuj wynik jak każde inne pole w drzewie — na przykład wywołaj na nimUpdate(), jeśli typ pola wymaga wyraźnego przeliczenia.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
BuildAndInsert wskazuje niewłaściwą lokalizację | Użyto niewłaściwej przeciążonej wersji dla zamierzonego punktu wstawiania | Przekaż węzeł Inline, aby wstawić przed nim, lub Paragraph, aby wstawić na jego końcu |
| Argument pola nie akceptuje jednocześnie zwykłego tekstu i węzła | AddArgument został wywołany z pojedynczym string/int/double zamiast z argumentem złożonym | Zbuduj mieszany argument przy użyciu FieldArgumentBuilder (AddText, AddNode, AddField) i przekaż go do AddArgument |
| Wartość przełącznika nie jest rozpoznawana w wygenerowanym kodzie pola | AddSwitch(switchName) został użyty, gdy przełącznik faktycznie wymaga argumentu | Użyj przeciążenia AddSwitch(switchName, switchArgument) z wartością string, int lub double przełącznika |
FAQ
Kiedy powinno się używać FieldBuilder zamiast wstawiać gotowy kod pola?
Użyj FieldBuilder, gdy potrzebujesz jawnej kontroli nad argumentami i przełącznikami pola podczas ich programowego budowania, zamiast wstawiać gotowy ciąg kodu pola.
Jak dodać do pola więcej niż jeden argument?
Wywołaj AddArgument raz dla każdego argumentu — jest przeciążony dla string, int, double, zagnieżdżonego FieldBuilder oraz FieldArgumentBuilder.
Czy mogę zbudować pole, którego argument zawiera mieszankę tekstu i innego pola?
Tak — użyj FieldArgumentBuilder, wywołując w razie potrzeby AddText, AddNode i AddField, a następnie przekaż to do FieldBuilder.AddArgument.
Jak właściwie wstawić zbudowane pole do dokumentu?
Wywołaj BuildAndInsert(refNode), przekazując albo węzeł Inline (wstawia przed nim), albo Paragraph (wstawia na jego końcu).
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
FieldBuilder | Tworzy pole z tokenów kodu pola (argumenty i przełączniki) |
FieldBuilder(fieldType) | Konstruktor przyjmujący FieldType do zbudowania |
FieldBuilder.AddArgument(argument) | Dodaje argument (string, int, double, FieldBuilder lub FieldArgumentBuilder) |
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument) | Dodaje przełącznik pola, z wartością lub bez niej |
FieldBuilder.BuildAndInsert(refNode) | Wstawia zbudowane pole przed węzłem Inline lub na końcu Paragraph |
FieldArgumentBuilder | Tworzy złożony argument pola z tekstu, węzłów i zagnieżdżonych pól |
FieldArgumentBuilder.AddText(text) | Dodaje zwykły tekst do argumentu |
FieldArgumentBuilder.AddNode(node) | Dodaje węzeł Inline do argumentu |
FieldArgumentBuilder.AddField(fieldBuilder) | Zagnieżdża pole utworzone przez FieldBuilder w argumencie |