Бърз и лесен: Вземи папка SPFolder на SPItemList

Продължавам да бягам в този проблем и Google никога не изглежда да се разбере това, което искам да направя, така че си помислих, аз ще пиша това.

Съм правил много събитие получател, отстраняване на грешки в последната седмица или две. Реанимацията се дефинира срещу библиотека с документи. Отделните елементи в библиотеката с документи са плътно свързани с техните родителски папки. Така, Аз винаги съм се в папка на елемента за различни манипулации. Докато грешки, Трябваше да актуализира метаданните на папка за конкретен артикул чийто ИД, знам.

Ето малко конзола заявление (проектиран да работи на сървър в групата) Това отнема два аргумента: ИД на елемент и стойност, за да присвоите на поле, "Състояние на одобрение". Той трудно кодове на много неща и няма проверка за грешки.

Кодът изглежда твърди кодирани сайт, получава библиотека с твърди кодирани документи и след това намира посоченият елемент. След това установи родителската папка на този елемент и присвоява стойността на състоянието.

Основните урок тук за мен е, че SPItem не получите достъп до папката. Вие трябва да използвате SPListItem.File.

Ако някой му пука да предложат критика или да предложи по-добър начин да получите в папката на елемент, Моля, оставете коментар.

<код>
използване на Система;
използване на System.Collections.Generic;
използване на System.Text;
използване на Microsoft.SharePoint;
използване на System.Collections;

пространство на имената Conchango
{
    /// <Резюме>
 /// </Резюме>
 клас ManualFolderUpdate
    {
        статични невалидни Основни(низ[] ARGS)
        {
            низ 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 + "Брой doc lib елементи: [" + docLib.ItemCount + "].");

                    INT ИД на папка = 0;
                    низ NewStatus = "xyzzy";

                    ИД на папка = система.Конвертиране.ToInt32(ARGS[0].ToString());
                    Конзола.WriteLine("Търсенето на папка за артикули: [" + ИД на папка + "].");

                    SPListItem Li = docLib.GetItemById(ИД на папка);

                    Папка SPFolder thisItemFolder = li.File.ParentFolder;

                    Конзола.WriteLine(MSH + "Имам на родителската папка.");

                    NewStatus = args[1].ToString();
                    Конзола.WriteLine("Установяване състояние [" + NewStatus + "].");

                    Конзола.WriteLine("Натиснете връщане към извършване на актуализация или CTRL-C да се откажем.");

                    Конзола.ReadLine();

                    thisItemFolder.Item["Състояние на одобрение"] = NewStatus;
                    thisItemFolder.Item.Update();

                    Конзола.WriteLine(MSH + "Завърших актуализиране на папка.  Излизане.");

                } // използване на SPWeb

            } // използване на SPSite

 Конзола.WriteLine(MSH + "Завърши.");

        } // Основни

    } // клас foldersync
} // пространство на имената
</код>

</край>

Абонирайте се за моя блог.

Technorati тагове:

Оставете отговор

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани *