Xây dựng các trường với FieldBuilder
Xây dựng Trường với FieldBuilder
Hướng dẫn này cho thấy cách tạo một trường Word từ đầu trong Aspose.Words FOSS cho .NET bằng cách sử dụng FieldBuilder and FieldArgumentBuilder, thay vì làm việc với một trường đã tồn tại trong tài liệu. Để đọc, cập nhật hoặc xóa các trường hiện có, xem phần Làm việc với các trường hướng dẫn.
Tạo một Trường với FieldBuilder
FieldBuilder xây dựng một trường từ các token mã trường — các đối số và công tắc. Tạo một trường bằng new FieldBuilder(fieldType), truyền FieldType của trường bạn muốn xây dựng. Thêm các đối số bằng phương thức AddArgument(argument) được nạp chồng, chấp nhận một string, int, double, một FieldBuilder lồng nhau, hoặc một FieldArgumentBuilder. Thêm các công tắc bằng các phương thức AddSwitch(switchName), AddSwitch(switchName, switchArgument) (chuỗi), hoặc AddSwitch(switchName, switchArgument) (int/double) được nạp chồng.
Chèn Trường Đã Xây Dựng
Khi một FieldBuilder đã có các đối số và công tắc, gọi BuildAndInsert(refNode) để chèn nó vào tài liệu — một phiên bản nạp chồng chấp nhận một nút Inline và chèn trường trước nó, và một phiên bản khác chấp nhận một Paragraph và chèn trường ở cuối đoạn văn đó.
Soạn Thảo Các Đối Số Phức Tạp với FieldArgumentBuilder
FieldArgumentBuilder tạo một đối số trường phức tạp bao gồm các trường, nút và văn bản thuần, cho những trường hợp một đối số duy nhất cần nhiều hơn một chuỗi thuần. Tạo một đối số bằng new FieldArgumentBuilder(), sau đó gọi AddText(text) để thêm văn bản thuần, AddNode(node) để thêm một nút Inline, hoặc AddField(fieldBuilder) để lồng một trường khác (được xây dựng bằng FieldBuilder riêng) vào trong đối số. Gửi FieldArgumentBuilder đã hoàn thành cho FieldBuilder.AddArgument(argument) để sử dụng nó như một trong các đối số của trường bên ngoài.
Mẹo và Thực hành Tốt nhất
- Sử dụng
FieldBuilderkhi xây dựng một loại trường không được hỗ trợ bởi một trong các lớp trường chuyên dụng (chẳng hạnFieldDatehoặcFieldSymbol), hoặc khi tạo mã trường một cách lập trình từ dữ liệu thay vì tự viết thủ công. - Lồng một trường con vào trong đối số của trường bên ngoài bằng
FieldBuilder.AddArgument(FieldBuilder)cho trường hợp đơn giản, hoặc xây dựng một đối số hỗn hợp gồm văn bản, nút và các trường lồng nhau bằngFieldArgumentBuilderkhi đối số vượt quá một trường duy nhất. - Chọn phiên bản
BuildAndInsert(refNode)phù hợp với vị trí bạn muốn trường được đặt — trước một nútInlinecụ thể, hoặc ở cuối mộtParagraph. - Sau
BuildAndInsert, đối xử với kết quả như bất kỳ trường nào khác trong cây — ví dụ, gọiUpdate()trên nó nếu loại trường yêu cầu tính toán lại một cách rõ ràng.
Các Vấn Đề Thường Gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
BuildAndInsert nhắm mục tiêu vào vị trí sai | Đã sử dụng overload sai cho vị trí chèn mong muốn | Truyền một nút Inline để chèn trước nó, hoặc một Paragraph để chèn vào cuối nó |
| Một đối số trường không chấp nhận cả văn bản thuần và một nút cùng lúc | AddArgument đã được gọi với một string/int/double đơn lẻ thay vì một đối số hợp thành | Xây dựng đối số hỗn hợp bằng FieldArgumentBuilder (AddText, AddNode, AddField) và truyền nó cho AddArgument |
| Giá trị switch không được nhận dạng trong mã trường đã xây dựng | AddSwitch(switchName) đã được sử dụng khi switch thực tế cần một đối số | Sử dụng overload AddSwitch(switchName, switchArgument) với giá trị chuỗi, int hoặc double của switch |
FAQ
Khi nào tôi nên sử dụng FieldBuilder thay vì chèn một mã trường đã được tạo sẵn?
Sử dụng FieldBuilder khi bạn cần kiểm soát rõ ràng các đối số và công tắc của một trường khi bạn tạo chúng một cách lập trình, thay vì chèn một chuỗi mã trường đã được tạo sẵn.
Làm sao tôi có thể thêm nhiều hơn một đối số vào một trường?
Gọi AddArgument một lần cho mỗi đối số — nó được quá tải cho string, int, double, một FieldBuilder lồng nhau, và FieldArgumentBuilder.
Tôi có thể xây dựng một trường mà đối số của nó chứa cả văn bản và một trường khác không?
Có — sử dụng FieldArgumentBuilder, gọi AddText, AddNode và AddField khi cần, sau đó truyền nó cho FieldBuilder.AddArgument.
Làm sao tôi thực sự đưa trường đã xây dựng vào tài liệu?
Gọi BuildAndInsert(refNode), truyền vào một nút Inline (chèn trước nó) hoặc một Paragraph (chèn vào cuối nó).
API Reference Tóm tắt
| Lớp/Phương thức | Mô tả |
|---|---|
FieldBuilder | Xây dựng một trường từ các token mã trường (đối số và công tắc) |
FieldBuilder(fieldType) | Bộ tạo nhận FieldType để xây dựng |
FieldBuilder.AddArgument(argument) | Thêm một đối số (string, int, double, FieldBuilder, hoặc FieldArgumentBuilder) |
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument) | Thêm một công tắc trường, có hoặc không có giá trị |
FieldBuilder.BuildAndInsert(refNode) | Chèn trường đã xây dựng trước một nút Inline hoặc ở cuối một Paragraph |
FieldArgumentBuilder | Xây dựng một đối số trường phức tạp từ văn bản, các nút và các trường lồng nhau |
FieldArgumentBuilder.AddText(text) | Thêm văn bản thuần vào đối số |
FieldArgumentBuilder.AddNode(node) | Thêm một nút Inline vào đối số |
FieldArgumentBuilder.AddField(fieldBuilder) | Lồng một trường được tạo bởi FieldBuilder vào đối số |