دسترسی سریع و آسان: SPFolder از SPItemList

من دائم در حال اجرا را به این مشکل و گوگل به نظر می رسد هرگز به درک آنچه من می خواهم, بنابراین من من این پایین بنویسید.

من انجام شده است بسیاری از اشکال زدایی رویداد گیرنده در دو هفته گذشته یا. The ER is defined against a document library. The individual items in the document library are tightly related to their parent folders. پس, I am always getting the folder of the item for various manipulations. While debugging, من نیاز به به روز رسانی متا دیتا ها را از یک پوشه برای یک آیتم خاص که ID من می دانم.

در اینجا یک برنامه کنسول کمی (طراحی شده برای اجرا بر روی سرور در مزرعه) که دو آرگومان طول می کشد: شناسه یک آیتم و یک مقدار را به او واگذار به یک فیلد, "Approval Status". It hard codes a lot of stuff and has no error checking.

کد نظر می رسد تا یک سایت سخت رمزی, gets a hard coded document library and then finds the indicated item. It then finds the parent folder of that item and assigns the status value.

The key lesson here for me is that SPItem doesn’t get you access to the folder. You need to use SPListItem.File.

اگر کسی مراقبت به ارائه انتقاد یا پیشنهاد راه بهتری برای بدست آوردن پوشه مورد, لطفا ترک یک نظر.

<قانون>
با استفاده از سیستم;
با استفاده از System.Collections.Generic;
با استفاده از System.Text;
با استفاده از Microsoft.Sharepoint در;
با استفاده از System.Collections;

فضای نام Conchango
{
    /// <خلاصه>
 /// </خلاصه>
 کلاس ManualFolderUpdate
    {
        ایستا از درجه اعتبار ساقط اصلی(رشته[] استدلال)
        {
            رشته MSH = "ManualFolderUpdate (V1.0): "; // msh = "Message Header"

 کنسول.WriteLine(MSH + "Starting up.  من آخرین 08/04/08 تغییر یافتهاست.");

            رشته URL = http://localhost/xyzzy;

            با استفاده از (SPSite oSPSite = جدید SPSite(آدرس))
            {

                با استفاده از (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["Documents"];

                    کنسول.WriteLine(MSH + "Got the document library.");

                    کنسول.WriteLine(MSH + "Doc lib item count: [" + docLib.ItemCount + "].");

                    اعضای هیات FolderID = 0;
                    رشته NewStatus = "xyzzy";

                    FolderID = سیستم.تبدیل.ToInt32(استدلال[0].ToString());
                    کنسول.WriteLine("Seeking folder for item: [" + FolderID + "].");

                    SPListItem لی = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    کنسول.WriteLine(MSH + "Got the parent folder.");

                    NewStatus استدلال =[1].ToString();
                    کنسول.WriteLine("Setting status to [" + NewStatus + "].");

                    کنسول.WriteLine("Press return to commit the update or CTRL-C to abort.");

                    کنسول.ReadLine();

                    thisItemFolder.Item["Approval Status"] = NewStatus،;
                    thisItemFolder.Item.Update();

                    کنسول.WriteLine(MSH + "Finished updating the folder.  خروج است.");

                } // با استفاده از SPWeb

            } // با استفاده از SPSite

 کنسول.WriteLine(MSH + "Finished.");

        } // اصلی

    } // کلاس foldersync
} // فضای نام
</قانون>

</پایان>

مشترک شدن در وبلاگ من.

پاسخ

آدرس ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *