Facile e veloce: Ottenere SPFolder di SPItemList

Continuo a incontrando questo problema e Google non sembra mai capire che cosa voglio fare, così ho pensato che questo scriverebbe.

Ho fatto un sacco di ricezione di eventi di debug nell'ultima settimana o due. L'ER è definito contro una raccolta documenti. I singoli elementi nella raccolta documenti sono strettamente legati alla loro cartelle padre. Così, Ricevo sempre la cartella dell'elemento per varie manipolazioni. Durante il debug, Avevo bisogno di aggiornare i metadati di una cartella per un elemento specifico cui ID so.

Qui è una piccola applicazione console (progettato per essere eseguito sul server della farm) che accetta due argomenti: l'ID di un elemento e un valore da assegnare a un campo, "Stato di approvazione". E ' difficile codici un sacco di roba e nessun controllo di errore.

Il codice sembra un luogo duro codificato, Ottiene una raccolta di documenti hardcoded e poi trova l'elemento indicato. Poi trova la cartella padre di tale elemento e assegna il valore di stato.

La lezione fondamentale qui per me è che SPItem non consente di accedere alla cartella. È necessario utilizzare SPListItem.File.

Se qualcuno si preoccupa di offrire una critica o suggerire un modo migliore per ottenere la cartella di un elemento, si prega di lasciare un commento.

<codice>
utilizzando Sistema;
utilizzando System.Collections.Generic;
utilizzando System. Text;
utilizzando Microsoft. SharePoint;
utilizzando System. Collections;

spazio dei nomi Conchango
{
    /// <Riassunto>
 /// </Riassunto>
 classe ManualFolderUpdate
    {
        statico void Main(stringa[] args)
        {
            stringa MSH = "ManualFolderUpdate (v 1.0): "; // MSH = "intestazione del messaggio"

 Console.WriteLine(MSH + "Avviamento.  Stavo ultima modifica 04/08/08.");

            stringa URL = http://localhost/xyzzy;

            utilizzando (SPSite oSPSite = Nuovo SPSite(URL))
            {

                utilizzando (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["Documenti"];

                    Console.WriteLine(MSH + "Ha ottenuto la raccolta documenti.");

                    Console.WriteLine(MSH + "Doc lib conteggio: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    stringa NewStatus = "xyzzy";

                    FolderID = sistema.Convertire.ToInt32(args[0].ToString());
                    Console.WriteLine("Cerca cartella per elemento: [" + FolderID + "].");

                    SPListItem li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Console.WriteLine(MSH + "Ha ottenuto la cartella padre.");

                    NewStatus = args[1].ToString();
                    Console.WriteLine("Stato di impostazione per [" + NewStatus + "].");

                    Console.WriteLine("Premere ritorno a commettere l'aggiornamento o CTRL-C per interrompere l'operazione.");

                    Console.ReadLine();

                    thisItemFolder.Item["Lo stato di approvazione"] = NewStatus;
                    thisItemFolder.Item.Update();

                    Console.WriteLine(MSH + "Finito l'aggiornamento della cartella.  Uscendo.");

                } // utilizzando SPWeb

            } // utilizzando SPSite

 Console.WriteLine(MSH + "Finito.");

        } // Main

    } // classe foldersync
} // spazio dei nomi
</codice>

</fine>

Iscriviti al mio blog.

Technorati Tags:

Lasciare una risposta

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *