Hurtig og nem: Få SPFolder af SPItemList

Jeg holder løbe ind i dette problem og Google synes aldrig at forstå, hvad jeg ønsker at gøre, så jeg regnede ville jeg skrive det.

Jeg har gjort en masse event modtager fejlfinding i den sidste uge eller to. Skadestuen er defineret mod et dokumentbibliotek. De enkelte elementer i dokumentbiblioteket er tæt relateret til deres overordnede mapper. Så, Jeg får altid mappen af varen for forskellige manipulationer. Mens fejlfinding, Jeg havde brug at opdatere metadataene i en mappe for en bestemt vare hvis ID jeg kender.

Her er en lille konsolprogram (designet til at køre på server i farmen) det tager to argumenter: ID'ET for et emne og en værdi til at tildele et felt, "Godkendelsesstatus". Det hårdt koder en masse ting og har ingen fejlkontrol.

Koden ser op en hårdt kodet hjemmeside, får en hårdt kodet dokumentbibliotek og derefter finder de angivne. Derefter finder den overordnede mappe af elementet og tildeler statusværdien.

Den vigtigste lektie her for mig er, at SPItem ikke får du adgang til mappen. Du skal bruge SPListItem.File.

Hvis nogen bryder sig om at tilbyde en kritik eller foreslå en bedre måde at få mappen af en vare, venligst efterlade en kommentar.

<kode>
ved hjælp af System;
ved hjælp af System.Collections.Generic;
ved hjælp af System.Text;
ved hjælp af Microsoft.SharePoint;
ved hjælp af System.Collections;

navneområde Conchango
{
    /// <Resumé>
 /// </Resumé>
 klasse ManualFolderUpdate
    {
        statisk void Main(streng[] args)
        {
            streng MSH = "ManualFolderUpdate (v1.0): "; // MSH = "besked overskrift"

 Konsol.WriteLine(MSH + "Opstart.  Jeg blev senest ændret den 08/04/08.");

            streng URL = http://localhost/xyzzy;

            ved hjælp af (SPSite oSPSite = nye SPSite(URL-adresse))
            {

                ved hjælp af (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList.Update() docLib = oSPWeb.Lists["Dokumenter"];

                    Konsol.WriteLine(MSH + "Fik dokumentbiblioteket.");

                    Konsol.WriteLine(MSH + "Doc lib emnet tæller: [" + docLib.ItemCount + "].");

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

                    FolderID = System.Konvertere.ToInt32(args[0].ToString());
                    Konsol.WriteLine("Søger mappe for varen: [" + FolderID + "].");

                    SPListItem Li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Konsol.WriteLine(MSH + "Fik den overordnede mappe.");

                    NewStatus = args[1].ToString();
                    Konsol.WriteLine("Indstilling af status [" + NewStatus + "].");

                    Konsol.WriteLine("Trykke retur til at begå opdatering eller CTRL-C for at afbryde.");

                    Konsol.ReadLine();

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

                    Konsol.WriteLine(MSH + "Færdig med at opdatere mappen.  Spændende.");

                } // ved hjælp af SPWeb

            } // ved hjælp af SPSite

 Konsol.WriteLine(MSH + "Færdig.");

        } // Main

    } // klasse foldersync
} // navneområde
</kode>

</slutningen>

Abonner på min blog.

Technorati Tags:

Efterlad et svar

Din e-mail adresse vil ikke blive offentliggjort. Krævede felter er markeret *