ผมให้ทำงานเป็นปัญหานี้ และ Google ดูเหมือนไม่เข้าใจสิ่งที่ฉันอยากทำ, ดังนั้นผมคิดจะเขียนนี้ลง.
ฉันได้ทำจำนวนมากรับเหตุการณ์ดีบักในสัปดาห์หรือสอง. ER กำหนดไว้กับไลบรารีเอกสาร. แต่ละรายการใน'ไลบรารีเอกสารแน่นเกี่ยวข้องกับโฟลเดอร์แม่. ดังนั้น, ฉันมักจะได้รับโฟลเดอร์ของสินค้าสำหรับ manipulations ภาพต่าง ๆ. ในขณะที่ตรวจแก้จุดบกพร่อง, ฉันจำเป็นต้องปรับปรุงข้อมูลเมตาของโฟลเดอร์สำหรับสินค้าเฉพาะ ID ฉันรู้.
นี่คือโปรแกรมประยุกต์คอนโซลเล็กน้อย (ออกแบบมาเพื่อรันบนเซิร์ฟเวอร์ในฟาร์ม) ที่ใช้อาร์กิวเมนต์ที่สอง: รหัสของสินค้าและค่ากำหนดให้กับเขตข้อมูล, "สถานะการอนุมัติ". มันยากมากสิ่งรหัส และมีไม่ตรวจสอบข้อผิดพลาด.
รหัสค้นหาไซต์ยากรหัส, ไลบรารีเอกสารหนักใส่รหัสที่ได้รับ และระบุรายการที่ค้นหาแล้ว. จะพบโฟลเดอร์หลักของสินค้านั้น แล้วกำหนดค่าสถานะ.
บทสำคัญที่นี่ฉันจะว่า SPItem ไม่รับคุณเข้าไปยังโฟลเดอร์. คุณต้องใช้ SPListItem.File.
ถ้าใครใส่ใจนำเสนอวิจารณ์ หรือแนะนำวิธีที่ดีกว่าไปยังโฟลเดอร์ของรายการ, กรุณาฝากความคิดเห็น.
<รหัส>
โดยใช้ ระบบ; โดยใช้ System.Collections.Generic; โดยใช้ System.Text; โดยใช้ Microsoft.SharePoint; โดยใช้ System.Collections; เนมสเปซ Conchango { /// <สรุป> /// </สรุป> คลาส ManualFolderUpdate { คง โมฆะ หลัก(สายอักขระ[] อาร์กิวเมนต์) { สายอักขระ นาม msh = "ManualFolderUpdate (v1.0): "; // นาม msh = "ส่วนหัวข้อความ" คอนโซล.WriteLine(นาม msh + "เริ่มต้นขึ้น. ฉันแก้ไขล่าสุดวันที่ 08/04/08"); สายอักขระ url = http://localhost/xyzzy; โดยใช้ (SPSite oSPSite = ใหม่ SPSite(url)) { โดยใช้ (SPWeb oSPWeb = oSPSite.OpenWeb()) { Splist.update() docLib = oSPWeb.Lists["เอกสาร"]; คอนโซล.WriteLine(นาม msh + "มีไลบรารีเอกสาร"); คอนโซล.WriteLine(นาม msh + "เอกสาร lib ตรวจนับสินค้า: [" + docLib.ItemCount + "]."); int FolderID = 0; สายอักขระ NewStatus = "xyzzy"; FolderID =ระบบ.แปลง.ToInt32(อาร์กิวเมนต์[0].ToString()); คอนโซล.WriteLine("หาโฟลเดอร์สำหรับสินค้า: [" + FolderID + "]."); SPListItem li = docLib.GetItemById(FolderID); SPFolder thisItemFolder = liFile.ParentFolder; คอนโซล.WriteLine(นาม msh + "มีโฟลเดอร์หลัก"); NewStatus =อาร์กิวเมนต์[1].ToString(); คอนโซล.WriteLine("ตั้งค่าสถานะเป็น [" + NewStatus + "]."); คอนโซล.WriteLine("กดกลับไปยอมรับการปรับปรุงหรือ CTRL C เพื่อยกเลิก"); คอนโซล.ReadLine(); thisItemFolder.Item["สถานะการอนุมัติ"] = NewStatus; thisItemFolder.Item.Update(); คอนโซล.WriteLine(นาม msh + "ปรับปรุงโฟลเดอร์เสร็จ. ออกจากโปรแกรม"); } // ใช้ SPWeb } // ใช้ SPSite คอนโซล.WriteLine(นาม msh + "เสร็จ"); } // หลัก } // คลาส foldersync } // เนมสเปซ
</รหัส>
</สิ้นสุด>