โปรแกรมปรับปรุง: ใช้งาน แต่มีข้อจำกัดสำคัญที่อธิบายไว้ในข้อคิดเห็น. นี้ยังอาจมีประโยชน์ในบาง cirumstances.
โปรแกรมปรับปรุง 2: ในโครงการปัจจุบัน, ผู้ใช้จะอัปโหลดเอกสาร. เป็นผล, ฉันไม่ทำงานเป็นปัญหาที่ MS Word อยู่ และคิดว่า แฟ้มถูกเปลี่ยนชื่อใน. ฉันไม่ได้ทำงานเป็นปัญหา, "แฟ้มถูกปรับเปลี่ยน โดยคนอื่น" และแก้ไขนี้ผ่านธงชนิดเซมาฟอร์ง่าย. ผู้ใช้จำเป็นต้องเปลี่ยนเขตข้อมูลเมตาจากค่าเริ่มต้นของอย่างอื่น. Itemupdated() ตัวรับสัญญาณค้นหาค่าถูกต้องมีก่อนที่ จะดำเนินการเปลี่ยนชื่อตัวจริง และ ตั้งแต่นั้น, ฉันไม่มีปัญหาใด ๆ. ระยะอาจแตกต่างกัน.
มีความต้องการลูกค้าเพื่อเปลี่ยนชื่อของแฟ้มที่อัปโหลดในไลบรารีเอกสารเฉพาะเพื่อให้สอดคล้องกับแผนการตั้งชื่อที่เฉพาะ. API ให้เปลี่ยนชื่อ"()" วิธีการ. แทน, เราใช้ "MoveTo(…)". นี่คือบิตต่ำสุดของรหัสการทำ:
สาธารณะ การแทน โมฆะ ItemAdded(SPItemEventProperties คุณสมบัติ) { SPFile f =คุณสมบัติListItem.File; f.MoveTo(คุณสมบัติListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
"คุณสมบัติ การเป็นบิตหากินเท่านั้น ListItem.ParentList.RootFolder.Url". การ MoveTo() วิธีต้องการ URL. ที่ทำขึ้นจุดสายผมไปยังโฟลเดอร์รากของไลบรารีเอกสารปัจจุบัน. นี้ช่วยให้ฉันเพื่อหลีกเลี่ยงการเขียนโค้ดใด ๆ ยากในรับเหตุการณ์ของฉัน.
นี้เป็นรุ่นมีประโยชน์มากที่เดียว, แต่กำหนดชื่อของแฟ้มเมื่อต้องการ "ชื่อเรื่อง":
สาธารณะ การแทน โมฆะ ItemAdded(SPItemEventProperties คุณสมบัติ) { DisableEventFiring(); // กำหนดชื่อเรื่องของรายการนี้เป็นชื่อของแฟ้มเอง. // หมายเหตุ: การกำหนดนี้ต้องเกิดขึ้นก่อนที่เราปรับเปลี่ยนแฟ้มเอง. // เรียกการปรับปรุง() บน SPFile ดูเหมือนว่าจะ โมฆะคุณสมบัติใน // ความรู้สึกบางอย่าง. การปรับปรุงชื่อเรื่อง"" ล้มเหลวจนกว่าที่เปลี่ยน (และปรับปรุง() โทร) // ถูกย้ายไปหน้าการเปลี่ยนแปลงไปชื่อแฟ้ม. คุณสมบัติListItem[ชื่อเรื่อง""] =คุณสมบัติListItem.File.Name; คุณสมบัติListItem.Update(); SPFile f =คุณสมบัติListItem.File; // ส่วนขยายของแฟ้มที่ได้รับ. เราจำเป็นที่ในภายหลัง. สายอักขระ spfileExt = ใหม่ FileInfo(f.Name).นามสกุล; // เปลี่ยนชื่อแฟ้มกับ ID ของรายการ และใช้นามสกุลของแฟ้มเพื่อเก็บ // ส่วนที่ยังคงอยู่. f.MoveTo(คุณสมบัติListItem.ParentList.RootFolder.Url + "/" + คุณสมบัติListItem["ID"] + spfileExt); // ยืนยันการย้าย. f.Update(); EnableEventFiring(); } |