Membangun Fields dengan FieldBuilder
Membangun Field dengan FieldBuilder
Panduan ini menunjukkan cara membuat field Word dari awal di Aspose.Words FOSS untuk .NET menggunakan FieldBuilder and FieldArgumentBuilder, alih-alih bekerja dengan field yang sudah ada dalam dokumen. Untuk membaca, memperbarui, atau menghapus field yang ada, lihat Bekerja dengan Field panduan.
Membuat Field dengan FieldBuilder
FieldBuilder membangun field dari token kode field — argumen dan switch. Buat satu dengan new FieldBuilder(fieldType), dengan melewatkan FieldType dari field yang ingin Anda bangun. Tambahkan argumen dengan metode AddArgument(argument) yang overload, yang menerima string, int, double, FieldBuilder bersarang, atau FieldArgumentBuilder. Tambahkan switch dengan metode overload AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string), atau AddSwitch(switchName, switchArgument) (int/double).
Menyisipkan Field yang Dibuat
Setelah sebuah FieldBuilder memiliki argumen dan switch-nya, panggil BuildAndInsert(refNode) untuk menyisipkannya ke dalam dokumen — satu overload menerima node Inline dan menyisipkan field sebelum node tersebut, dan yang lain menerima Paragraph dan menyisipkan field di akhir paragraf tersebut.
Menyusun Argumen Kompleks dengan FieldArgumentBuilder
FieldArgumentBuilder membangun argumen bidang kompleks yang terdiri dari bidang, node, dan teks biasa, untuk kasus di mana satu argumen membutuhkan lebih dari sekadar string biasa. Buat satu dengan new FieldArgumentBuilder(), kemudian panggil AddText(text) untuk menambahkan teks biasa, AddNode(node) untuk menambahkan node Inline, atau AddField(fieldBuilder) untuk menumpuk bidang lain (dibangun dengan FieldBuilder miliknya) di dalam argumen. Serahkan FieldArgumentBuilder yang telah selesai ke FieldBuilder.AddArgument(argument) untuk menggunakannya sebagai salah satu argumen bidang luar.
Tips dan Praktik Terbaik
- Gunakan
FieldBuildersaat membangun tipe bidang yang tidak didukung oleh salah satu kelas bidang khusus (sepertiFieldDateatauFieldSymbol), atau saat menghasilkan kode bidang secara programatik dari data daripada menulisnya secara manual. - Sisipkan bidang anak di dalam argumen bidang luar dengan
FieldBuilder.AddArgument(FieldBuilder)untuk kasus sederhana, atau bangun argumen campuran teks, node, dan bidang bersarang denganFieldArgumentBuilderketika argumen lebih dari satu bidang. - Pilih overload
BuildAndInsert(refNode)yang sesuai dengan tempat Anda ingin bidang ditempatkan — sebelum nodeInlinetertentu, atau di akhirParagraph. - Setelah
BuildAndInsert, perlakukan hasilnya seperti bidang lain dalam pohon — misalnya, panggilUpdate()padanya jika tipe bidang memerlukan perhitungan ulang secara eksplisit.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
BuildAndInsert menargetkan lokasi yang salah | Overload yang salah digunakan untuk titik penyisipan yang dimaksud | Berikan node Inline untuk disisipkan sebelum itu, atau Paragraph untuk disisipkan di akhir |
| Argumen bidang tidak akan menerima teks biasa dan node secara bersamaan | AddArgument dipanggil dengan satu string/int/double alih-alih argumen yang terkomposisi | Bangun argumen campuran dengan FieldArgumentBuilder (AddText, AddNode, AddField) dan berikan ke AddArgument |
| Nilai saklar tidak dikenali dalam kode bidang yang dibangun | AddSwitch(switchName) digunakan ketika saklar sebenarnya membutuhkan argumen | Gunakan overload AddSwitch(switchName, switchArgument) dengan nilai string, int, atau double dari saklar |
FAQ
Kapan saya harus menggunakan FieldBuilder alih-alih menyisipkan kode bidang yang sudah terbentuk?
Gunakan FieldBuilder ketika Anda memerlukan kontrol eksplisit atas argumen dan saklar sebuah bidang saat Anda menyusunnya secara programatik, bukan menyisipkan string kode bidang yang sudah terbentuk.
Bagaimana cara menambahkan lebih dari satu argumen ke sebuah bidang?
Panggil AddArgument sekali per argumen — fungsi ini memiliki overload untuk string, int, double, sebuah FieldBuilder bersarang, dan FieldArgumentBuilder.
Bisakah saya membuat sebuah bidang yang argumennya berisi campuran teks dan bidang lain?
Ya — gunakan FieldArgumentBuilder, panggil AddText, AddNode, dan AddField sesuai kebutuhan, kemudian berikan ke FieldBuilder.AddArgument.
Bagaimana cara menempatkan bidang yang telah dibangun ke dalam dokumen?
Panggil BuildAndInsert(refNode), dengan memberikan sebuah node Inline (menyisipkan sebelum node tersebut) atau sebuah Paragraph (menyisipkan di akhir node tersebut).
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
FieldBuilder | Membangun field dari token kode field (argumen dan saklar) |
FieldBuilder(fieldType) | Konstruktor yang mengambil FieldType untuk membangun |
FieldBuilder.AddArgument(argument) | Menambahkan argumen (string, int, double, FieldBuilder, atau FieldArgumentBuilder) |
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument) | Menambahkan saklar field, dengan atau tanpa nilai |
FieldBuilder.BuildAndInsert(refNode) | Menyisipkan field yang dibangun sebelum node Inline atau di akhir Paragraph |
FieldArgumentBuilder | Membangun argumen field kompleks dari teks, node, dan field bersarang |
FieldArgumentBuilder.AddText(text) | Menambahkan teks biasa ke argumen |
FieldArgumentBuilder.AddNode(node) | Menambahkan node Inline ke argumen |
FieldArgumentBuilder.AddField(fieldBuilder) | Menyisipkan field yang dibangun oleh FieldBuilder ke dalam argumen |