การสร้างฟิลด์ด้วย FieldBuilder
การสร้างฟิลด์ด้วย FieldBuilder
คู่มือนี้แสดงวิธีสร้างฟิลด์ Word ตั้งแต่ต้นใน Aspose.Words FOSS สำหรับ .NET โดยใช้ FieldBuilder and FieldArgumentBuilder, แทนที่จะทำงานกับฟิลด์ที่มีอยู่แล้วในเอกสาร สำหรับการอ่าน, ปรับปรุง หรือการลบฟิลด์ที่มีอยู่แล้ว, ดูที่ การทำงานกับฟิลด์ คู่มือ.
การสร้างฟิลด์ด้วย FieldBuilder
FieldBuilder สร้างฟิลด์จากโทเคนโค้ดฟิลด์ — อาร์กิวเมนต์และสวิตช์ สร้างหนึ่งโดยใช้ new FieldBuilder(fieldType) โดยส่ง FieldType ของฟิลด์ที่คุณต้องการสร้าง เพิ่มอาร์กิวเมนต์ด้วยเมธอด AddArgument(argument) ที่ overload ไว้ ซึ่งรับ string, int, double, FieldBuilder ที่ซ้อนกัน, หรือ FieldArgumentBuilder เพิ่มสวิตช์ด้วยเมธอดที่ overload ไว้ AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string), หรือ AddSwitch(switchName, switchArgument) (int/double).
การแทรกฟิลด์ที่สร้างขึ้น
เมื่อ FieldBuilder มีอาร์กิวเมนต์และสวิตช์แล้ว ให้เรียก BuildAndInsert(refNode) เพื่อแทรกลงในเอกสาร — overload หนึ่งรับโหนด Inline และแทรกฟิลด์ก่อนโหนดนั้น, อีก overload หนึ่งรับ Paragraph และแทรกฟิลด์ที่ส่วนท้ายของย่อมนั้น.
การสร้างอาร์กิวเมนต์ซับซ้อนด้วย FieldArgumentBuilder
FieldArgumentBuilder สร้างอาร์กิวเมนต์ฟิลด์ซับซ้อนที่ประกอบด้วยฟิลด์, โหนด, และข้อความธรรมดา สำหรับกรณีที่อาร์กิวเมนต์เดียวต้องการมากกว่าข้อความธรรมดา สร้างหนึ่งด้วย new FieldArgumentBuilder(), จากนั้นเรียก AddText(text) เพื่อเพิ่มข้อความธรรมดา, AddNode(node) เพื่อเพิ่มโหนด Inline, หรือ AddField(fieldBuilder) เพื่อใส่ฟิลด์อื่น (สร้างด้วย FieldBuilder ของมันเอง) ภายในอาร์กิวเมนต์ ส่ง FieldArgumentBuilder ที่เสร็จสมบูรณ์ให้กับ FieldBuilder.AddArgument(argument) เพื่อใช้เป็นหนึ่งในอาร์กิวเมนต์ของฟิลด์ภายนอก.
เคล็ดลับและแนวปฏิบัติที่ดีที่สุด
- ใช้
FieldBuilderเมื่อต้องสร้างประเภทฟิลด์ที่ไม่ได้รับการสนับสนุนโดยคลาสฟิลด์เฉพาะ (เช่นFieldDateหรือFieldSymbol) หรือเมื่อสร้างโค้ดฟิลด์โดยอัตโนมัติจากข้อมูลแทนการเขียนด้วยมือ. - ใส่ฟิลด์ลูกภายในอาร์กิวเมนต์ของฟิลด์ภายนอกด้วย
FieldBuilder.AddArgument(FieldBuilder)ในกรณีง่าย ๆ หรือสร้างอาร์กิวเมนต์ผสมของข้อความ, โหนด, และฟิลด์ซ้อนกันด้วยFieldArgumentBuilderเมื่ออาร์กิวเมนต์มีมากกว่าฟิลด์เดียว. - เลือกการ overload ของ
BuildAndInsert(refNode)ที่ตรงกับตำแหน่งที่คุณต้องการให้ฟิลด์วาง — ก่อนโหนดInlineเฉพาะ, หรือที่ท้ายของParagraph. - หลังจาก
BuildAndInsert, ปฏิบัติกับผลลัพธ์เช่นฟิลด์อื่น ๆ ในต้นไม้ — ตัวอย่างเช่น, เรียกUpdate()บนผลลัพธ์หากประเภทฟิลด์ต้องการการคำนวณใหม่อย่างชัดเจน.
ปัญหาที่พบบ่อย
| ปัญหา | สาเหตุ | วิธีแก้ไข |
|---|---|---|
BuildAndInsert กำหนดเป้าหมายไปยังตำแหน่งที่ไม่ถูกต้อง | ใช้ overload ที่ไม่ถูกต้องสำหรับจุดแทรกที่ต้องการ | ส่งโหนด Inline เพื่อแทรกก่อนมัน, หรือ Paragraph เพื่อแทรกที่ส่วนท้ายของมัน |
| อาร์กิวเมนต์ฟิลด์จะไม่รับข้อความธรรมดาและโหนดพร้อมกัน | AddArgument ถูกเรียกด้วย string/int/double เดียวแทนอาร์กิวเมนต์ที่ประกอบกัน | สร้างอาร์กิวเมนต์ผสมด้วย FieldArgumentBuilder (AddText, AddNode, AddField) แล้วส่งให้ AddArgument |
| ค่า switch ไม่ได้รับการรับรู้ในโค้ดฟิลด์ที่สร้างขึ้น | AddSwitch(switchName) ถูกใช้ในขณะที่ switch จริง ๆ แล้วต้องการอาร์กิวเมนต์ | ใช้ overload AddSwitch(switchName, switchArgument) พร้อมค่าข้อความ, int หรือ double ของ switch |
FAQ
เมื่อใดควรใช้ FieldBuilder แทนการแทรกโค้ดฟิลด์ที่เตรียมไว้ล่วงหน้า?
ใช้ FieldBuilder เมื่อคุณต้องการควบคุมอย่างชัดเจนต่ออาร์กิวเมนต์และสวิตช์ของฟิลด์ขณะสร้างโดยโปรแกรม มากกว่าการแทรกสตริงโค้ดฟิลด์ที่เตรียมไว้ล่วงหน้า.
ฉันจะเพิ่มอาร์กิวเมนต์มากกว่าหนึ่งรายการให้กับฟิลด์ได้อย่างไร?
เรียก AddArgument หนึ่งครั้งต่ออาร์กิวเมนต์ — ฟังก์ชันนี้ทำงานหลายรูปแบบสำหรับ string, int, double, FieldBuilder ที่ซ้อนกัน, และ FieldArgumentBuilder.
ฉันสามารถสร้างฟิลด์ที่อาร์กิวเมนต์ประกอบด้วยข้อความและฟิลด์อื่นผสมกันได้หรือไม่?
ได้ — ใช้ FieldArgumentBuilder เรียก AddText, AddNode และ AddField ตามต้องการ แล้วส่งผลลัพธ์ให้กับ FieldBuilder.AddArgument.
ฉันจะใส่ฟิลด์ที่สร้างเสร็จลงในเอกสารอย่างไร?
เรียก BuildAndInsert(refNode) โดยส่งโหนด Inline (แทรกก่อนโหนดนั้น) หรือ Paragraph (แทรกที่ส่วนท้ายของมัน).
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
FieldBuilder | สร้างฟิลด์จากโทเคนโค้ดฟิลด์ (อาร์กิวเมนต์และสวิตช์) |
FieldBuilder(fieldType) | คอนสตรัคเตอร์ที่รับ FieldType เพื่อสร้าง |
FieldBuilder.AddArgument(argument) | เพิ่มอาร์กิวเมนต์ (string, int, double, FieldBuilder หรือ FieldArgumentBuilder) |
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument) | เพิ่มสวิตช์ฟิลด์ ไม่ว่าจะมีค่าหรือไม่มีค่า |
FieldBuilder.BuildAndInsert(refNode) | แทรกฟิลด์ที่สร้างไว้ก่อนโหนด Inline หรือที่ส่วนท้ายของ Paragraph |
FieldArgumentBuilder | สร้างอาร์กิวเมนต์ฟิลด์ซับซ้อนจากข้อความ, โหนด, และฟิลด์ที่ซ้อนกัน |
FieldArgumentBuilder.AddText(text) | เพิ่มข้อความธรรมดาเข้าไปในอาร์กิวเมนต์ |
FieldArgumentBuilder.AddNode(node) | เพิ่มโหนด Inline ไปยังอาร์กิวเมนต์ |
FieldArgumentBuilder.AddField(fieldBuilder) | ฝังฟิลด์ที่สร้างโดย FieldBuilder เข้าไปในอาร์กิวเมนต์ |