ทำงานกับช่วงที่แก้ไขได้

ทำงานกับช่วงที่แก้ไขได้

ทำงานกับช่วงที่สามารถแก้ไขได้

คู่มือฉบับนี้แสดงวิธีตรวจสอบและลบช่วงที่สามารถแก้ไขได้ – ส่วนที่คุณลักษณะ “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คำอธิบาย
EditableRangeFacade สำหรับช่วงที่แก้ไขได้หนึ่งช่วง: Id, SingleUser, EditorGroup, Remove()
EditableRangeStartโหนดที่ทำเครื่องหมายจุดเริ่มต้นของช่วง; Id, EditableRange
EditableRangeEndโหนดที่ทำเครื่องหมายจุดสิ้นสุดของช่วง; Id, EditableRangeStart
EditorTypeรายการของกลุ่มการแก้ไข: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default

ดูเพิ่มเติม

 ภาษาไทย