Fácil e rápida: Obter SPFolder de SPItemList

Eu segue correndo para este problema e Google parece nunca entender o que quero facer, entón eu entender que eu ía escribir isto.

Eu teño feito unha morea de depuración receptor de eventos a última semana ou dúas. The ER is defined against a document library. The individual items in the document library are tightly related to their parent folders. Así, I am always getting the folder of the item for various manipulations. While debugging, Eu precisaba actualizar os metadatos dun cartafol para un elemento específico, cuxa ID sei.

Aquí é unha aplicación de consola pouco (deseñado para rodar en servidores no farm) que recibe dous argumentos: a ID dun elemento e un valor a asignar a un campo, "Approval Status". It hard codes a lot of stuff and has no error checking.

O código é un sitio codificado, 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.

Se alguén se preocupa en ofrecer unha crítica ou suxerir a mellor maneira de obter o cartafol dun elemento, por favor, deixe un comentario.

<código>
utilización Sistema;
utilización System.Collections.Generic;
utilización System.Text;
utilización Microsoft.SharePoint;
utilización System.Collections;

espazo de nomes Conchango
{
    /// <resumo>
 /// </resumo>
 clase ManualFolderUpdate
    {
        estático invalidar Principal(corda[] args)
        {
            corda MSH = "ManualFolderUpdate (v1.0): "; // msh = "Message Header"

 Consola.WriteLine(MSH + "Starting up.  I foi modificada por última vez en 08/04/08.");

            corda url = http://localhost/xyzzy;

            utilización (SPSite oSPSite = novo SPSite(url))
            {

                utilización (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList DocLib = oSPWeb.Lists["Documents"];

                    Consola.WriteLine(MSH + "Got the document library.");

                    Consola.WriteLine(MSH + "Doc lib item count: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    corda NewStatus = "Xyzzy";

                    FolderID = System.Converter.ToInt32(args[0].ToString());
                    Consola.WriteLine("Seeking folder for item: [" + FolderID + "].");

                    SPListItem li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Consola.WriteLine(MSH + "Got the parent folder.");

                    NewStatus = args[1].ToString();
                    Consola.WriteLine("Setting status to [" + NewStatus + "].");

                    Consola.WriteLine("Press return to commit the update or CTRL-C to abort.");

                    Consola.ReadLine();

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

                    Consola.WriteLine(MSH + "Finished updating the folder.  Saír.");

                } // usar SPWeb

            } // usar SPSite

 Consola.WriteLine(MSH + "Finished.");

        } // Principal

    } // clase FolderSync
} // espazo de nomes
</código>

</final>

Rexístrate para o meu blog.

Technorati Tags:

Deixe unha resposta

Enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *