ทำงานกับช่วงที่แก้ไขได้
ทำงานกับช่วงที่สามารถแก้ไขได้
คู่มือฉบับนี้แสดงวิธีตรวจสอบและลบช่วงที่สามารถแก้ไขได้ – ส่วนที่คุณลักษณะ “Restrict Editing” ของ Word ยกเว้นจากการจำกัดการแก้ไขทั้งหมดของเอกสาร ซึ่งอาจจำกัดให้กับผู้ใช้หรือกลุ่มเฉพาะ – ใน Aspose.Words FOSS สำหรับ .NET. ช่วงที่สามารถแก้ไขได้จะถูกล้อมรอบในต้นไม้ของเอกสารโดยคู่ของโหนดเครื่องหมาย, EditableRangeStart and EditableRangeEnd, และอธิบายโดยรวมโดย EditableRange facade class.
การค้นหาช่วงที่สามารถแก้ไขได้ในเอกสาร
ไม่มีคุณสมบัติคอลเลกชันเดียวสำหรับช่วงที่สามารถแก้ไขได้; ให้ค้นหาพวกมันโดยการเดินตามต้นไม้ของโหนด. CompositeNode.GetChildNodes(nodeType, isDeep) กับ NodeType.EditableRangeStart จะคืนค่าโหนด EditableRangeStart ทุกตัวในเอกสาร (หรือในส่วนย่อยของต้นไม้, หากเรียกบนโหนดที่ไม่ใช่ Document). คุณสมบัติ EditableRangeStart.EditableRange แต่ละตัวจะคืนอ็อบเจกต์ façade EditableRange ที่สอดคล้องกัน.
Facade EditableRange
EditableRange อธิบายช่วงที่สามารถแก้ไขได้เดียวเป็นทั้งหมด: Id ระบุมัน, SingleUser โดยเลือกจะตั้งชื่อผู้ใช้เฉพาะที่ได้รับอนุญาตให้แก้ไข, และ EditorGroup (ค่าประเภท EditorType) โดยเลือกจะตั้งชื่อกลุ่มการแก้ไขแทน. EditableRangeStart และ EditableRangeEnd คืนคู่ของโหนดมาร์คเกอร์ที่ล้อมรอบช่วงในเอกสาร. EditableRange.Remove() ลบช่วงที่สามารถแก้ไขได้ – ยกเลิกการยกเว้นข้อจำกัดการแก้ไขสำหรับพื้นที่นั้น, โดยไม่ลบเนื้อหาในเอกสารที่อยู่ภายใน.
โหนดมาร์คเกอร์: EditableRangeStart และ EditableRangeEnd
EditableRangeStart และ EditableRangeEnd เป็นซับคลาส Node ที่ sealed ซึ่งทำหน้าที่ระบุขอบเขตของช่วงในกระแสเนื้อหาของเอกสาร EditableRangeStart.Id และ EditableRangeEnd.Id ระบุตำแหน่งช่วง; EditableRangeStart.EditableRange เข้าถึงอ็อบเจ็กต์ facade โดยตรง และ EditableRangeEnd.EditableRangeStart กลับไปยังตัวบ่งชี้เริ่มต้นที่สอดคล้องกัน เนื่องจากเป็นโนดทั่วไป ทั้งสองจึงรองรับสมาชิกมาตรฐานของ Node — ParentNode, Document, PreviousSibling, NextSibling, และ Remove() เพื่อทำการลบตัวบ่งชี้แต่ละอัน.
การจำกัดการเข้าถึงด้วย EditorType
EditorType ระบุรายชื่อกลุ่มการแก้ไขที่ EditableRange.EditorGroup สามารถอ้างอิงได้: Administrators, Contributors, Editors, Owners, Everyone, Current, None, และ Unspecified (ยังมีให้ใช้ในรูปแบบ Default, ซึ่งเป็นนามแฝงของ Unspecified).
เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- ใช้
GetChildNodes(NodeType.EditableRangeStart, true)ร่วมกับisDeep: trueเพื่อค้นหาช่วงที่สามารถแก้ไขได้ในทุกส่วนของเอกสาร ไม่เพียงแค่ในบุตรของโนดโดยตรง. - อ่าน
EditableRange.SingleUserและEditorGroupร่วมกันเพื่อกำหนดว่าช่วงถูกจำกัดให้กับใครบ้าง — ช่วงอาจถูกกำหนดให้กับผู้ใช้คนเดียว, กลุ่มการแก้ไขหนึ่งกลุ่ม, หรือไม่มีใครเลย. - เรียก
EditableRange.Remove()(บน facade) แทนการลบโหนดเครื่องหมายEditableRangeStartและEditableRangeEndแยกกัน เพื่อให้ทั้งสองปลายของช่วงถูกทำความสะอาดอย่างสม่ำเสมอ.
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| ไม่พบช่วงที่สามารถแก้ไขได้แม้ว่าเอกสารจะมีการจำกัดการแก้ไข | การค้นหาใช้การเรียก GetChildNodes เริ่มต้น (ตื้น) | ส่งผ่าน isDeep: true เพื่อให้การค้นหาครอบคลุมต้นไม้ย่อยทั้งหมดของเอกสาร |
| การลบช่วงที่สามารถแก้ไขได้ไม่ได้ลบข้อความที่ถูกล้อมไว้ | EditableRange.Remove() จะลบเครื่องหมายช่วงและการยกเว้นการแก้ไขเท่านั้น ไม่ได้ลบเนื้อหาที่อยู่ระหว่างนั้น | นี่เป็นสิ่งที่คาดหวังไว้ – ให้ลบเนื้อหาแยกต่างหากหากต้องการลบด้วย |
EditorGroup แสดงเป็น Unspecified แม้ว่า Word จะโชว์กลุ่มที่ตั้งชื่อไว้ | กลุ่มผู้แก้ไขของช่วงในเอกสารต้นทางจะแมปเป็น EditorType.Unspecified/Default แทนค่าของกลุ่มที่ตั้งชื่อไว้หนึ่งค่า | ตรวจสอบ SingleUser ด้วย – ช่วงอาจถูกกำหนดขอบเขตเป็นผู้ใช้แต่ละคนแทน |
FAQ
ฉันจะค้นหาช่วงที่แก้ไขได้ทั้งหมดในเอกสารได้อย่างไร?
เรียก Document.GetChildNodes(NodeType.EditableRangeStart, true) แล้วอ่านคุณสมบัติ EditableRange บนแต่ละโหนด EditableRangeStart ที่ส่งคืน.
ฉันจะบอกว่าใครได้รับอนุญาตให้แก้ไขช่วงที่กำหนดได้อย่างไร?
อ่าน EditableRange.SingleUser (ผู้ใช้เฉพาะ) และ EditableRange.EditorGroup (กลุ่มการแก้ไข EditorType) บนอ็อบเจ็กต์ facade.
ฉันจะลบข้อจำกัดการแก้ไขจากส่วนหนึ่งของเอกสารได้อย่างไร?
เรียก Remove() บนอ็อบเจ็กต์ facade EditableRange สำหรับช่วงนั้น.
ความแตกต่างระหว่าง EditableRangeStart.EditableRange และ EditableRangeEnd.EditableRangeStart คืออะไร?
EditableRangeStart.EditableRange เข้าถึงอ็อบเจกต์ฟาซาเดที่อธิบายช่วงทั้งหมดโดยตรง. EditableRangeEnd.EditableRangeStart ย้อนกลับไปยังโหนดเครื่องหมายเริ่มต้นที่สอดคล้องกัน, ซึ่งจากนั้น EditableRange สามารถเข้าถึงได้.
API Reference สรุป
| คลาส / Enum | คำอธิบาย |
|---|---|
EditableRange | Facade สำหรับช่วงที่แก้ไขได้หนึ่งช่วง: Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | โหนดที่ทำเครื่องหมายจุดเริ่มต้นของช่วง; Id, EditableRange |
EditableRangeEnd | โหนดที่ทำเครื่องหมายจุดสิ้นสุดของช่วง; Id, EditableRangeStart |
EditorType | รายการของกลุ่มการแก้ไข: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |