Jag hålla igång på detta problem och Google verkar aldrig förstå vad jag vill göra, så jag tänkte skulle jag skriva ner.
Jag har gjort en hel del händelsemottagare felsökning i den senaste veckan eller två. ER definieras mot ett dokumentbibliotek. Enskilda objekt i dokumentbiblioteket är tätt relaterade till deras överordnade mappar. Så, Jag får alltid mappen för artikeln för olika manipulationer. Medan felsökning, Jag behövde uppdatera metadata för en mapp för en viss artikel vars ID jag vet.
Här är en liten console application (konstruerad för att köras på servern i servergruppen) som tar två argument: ID för ett objekt och ett värde tilldelas till ett fält, "Godkännandestatus". Det hårda koder en massa saker och har ingen felkontroll.
Koden ser en hårdkodad webbplats, blir en hårdkodad dokumentbibliotek och hittar sedan det angivna objektet. Därefter finner den överordnade mappen av objektet och tilldelar statusvärdet.
Den viktiga lärdomen här för mig är att SPItem inte får du tillgång till mappen. Du måste använda SPListItem.File.
Om någon bryr sig att erbjuda en kritik eller föreslå ett bättre sätt att få mappen för ett objekt, lämna gärna en kommentar.
<koden>
med hjälp av System; med hjälp av System.Collections.Generic; med hjälp av System.Text; med hjälp av Microsoft.SharePoint; med hjälp av System.Collections; namnområdet Conchango { /// <Sammanfattning> /// </Sammanfattning> klass ManualFolderUpdate { statisk void Main(sträng[] args) { sträng MSH = "ManualFolderUpdate (v1.0): "; // MSH = "meddelande huvudhoppen" Konsolen.WriteLine(MSH + "Starta. Jag var senast ändrad den 08/04/08."); sträng URL = http://localhost/xyzzy; med hjälp av (SPSite oSPSite = nya SPSite(URL)) { med hjälp av (SPWeb oSPWeb = oSPSite.OpenWeb()) { SPList docLib = oSPWeb.Lists["Dokument"]; Konsolen.WriteLine(MSH + "Fick dokumentbiblioteket."); Konsolen.WriteLine(MSH + "Doc lib objektet räkna: [" + docLib.ItemCount + "]."); int FolderID = 0; sträng NewStatus = "xyzzy"; FolderID = System.Konvertera.ToInt32(args[0].ToString()); Konsolen.WriteLine("Söker mapp för artikeln: [" + FolderID + "]."); SPListItem Li = docLib.GetItemById(FolderID); SPFolder thisItemFolder = li.File.ParentFolder; Konsolen.WriteLine(MSH + "Fick den överordnade mappen."); NewStatus = args[1].ToString(); Konsolen.WriteLine("Anger status till [" + NewStatus + "]."); Konsolen.WriteLine("Tryck återgå att begå den uppdateringen eller CTRL-C för att avbryta."); Konsolen.ReadLine(); thisItemFolder.Item["Godkännandestatus"] = NewStatus; thisItemFolder.Item.Update(); Konsolen.WriteLine(MSH + "Färdig uppdatera mappen. Spännande."); } // använda SPWeb } // använda SPSite Konsolen.WriteLine(MSH + "Färdiga."); } // Main } // klass foldersync } // namnområdet
</koden>
</slutet>