Брзо и лако: Набавите СПФолдер од СПИтемЛист

Стално ради на овом проблему и Гоогле никада не изгледа да разумеју оно што желим да радим, па сам мислио да пишем доле.

Радила сам много дебаговање догађаја пријемника у последњој недељи или две. 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, I needed to update the metadata of a folder for a specific item whose ID I know.

Here’s a little console application (designed to run on server in the farm) that takes two arguments: the ID of an item and a value to assign to a field, "Approval Status". It hard codes a lot of stuff and has no error checking.

The code looks up a hard coded site, 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.

If anyone cares to offer a critique or suggest a better way to get the folder of an item, оставите коментар.

<code>
коришћење Систем;
коришћење Систем.Цоллецтионс.Генериц;
коришћење Систем.Тект;
коришћење Microsoft.SharePoint;
коришћење Систем.Цоллецтионс;

намеспаце Цонцханго
{
    /// <резиме>
 /// </резиме>
 класа ManualFolderUpdate
    {
        статички воид Главни(ниска[] аргс)
        {
            ниска msh = "ManualFolderUpdate (v1.0): "; // msh = "Message Header"

 Конзола.ВритеЛине(msh + "Starting up.  I was last modified on 08/04/08.");

            ниска url = http://localhost/xyzzy;

            коришћење (СПСите oSPSite = нови СПСите(УРЛ))
            {

                коришћење (СПВеб oSPWeb = oSPSite.OpenWeb())
                {
                    СПЛист docLib = oSPWeb.Lists["Documents"];

                    Конзола.ВритеЛине(msh + "Got the document library.");

                    Конзола.ВритеЛине(msh + "Doc lib item count: [" + docLib.ItemCount + "].");

                    инт FolderID = 0;
                    ниска NewStatus = "xyzzy";

                    FolderID = System.Претворити.ТоИнт32(аргс[0].ТоСтринг());
                    Конзола.ВритеЛине("Seeking folder for item: [" + FolderID + "].");

                    SPListItem li = docLib.GetItemById(FolderID);

                    СПФолдер thisItemFolder = li.File.ParentFolder;

                    Конзола.ВритеЛине(msh + "Got the parent folder.");

                    NewStatus = args[1].ТоСтринг();
                    Конзола.ВритеЛине("Setting status to [" + NewStatus + "].");

                    Конзола.ВритеЛине("Press return to commit the update or CTRL-C to abort.");

                    Конзола.Реадлине();

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

                    Конзола.ВритеЛине(msh + "Finished updating the folder.  Exiting.");

                } // using SPWeb

            } // using SPSite

 Конзола.ВритеЛине(msh + "Finished.");

        } // Главни

    } // class foldersync
} // намеспаце
</code>

</крај>

Претплатите се на мој блог.

Тецхнорати Тагс:

Леаве а Репли

Ваша емаил адреса неће бити објављена. Обавезна поља су означена *