ง่าย และรวดเร็ว: ได้รับ SPFolder ของ SPItemList

ผมให้ทำงานเป็นปัญหานี้ และ 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
} // เนมสเปซ
</รหัส>

</สิ้นสุด>

สมัครสมาชิกไปยังบล็อกของฉัน.

แท็กของ Technorati:

ทิ้งคำตอบไว้

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่. ช่องที่ต้องการถูกทำเครื่องหมาย *