Ich in dieses Problem laufen zu halten und die Google scheint nie zu verstehen, was ich tun möchte, also ich dachte, ich würde das aufschreiben.
Ich habe eine Menge Ereignisempfänger Debuggen in der letzten Woche oder zwei getan. ER ist gegen eine Dokumentbibliothek definiert.. Die einzelnen Elemente in der Dokumentbibliothek beziehen sich eng auf die übergeordneten Ordner. Also, Ich bekomme immer den Ordner des Elements für verschiedene Manipulationen. Während des Debuggens, Ich brauchte, um die Metadaten eines Ordners für ein bestimmtes Element aktualisieren deren ID ich weiß.
Hier ist eine kleine Konsolenanwendung (auf Server in der Farm ausgeführt) Das nimmt zwei Argumente: die ID eines Elements und einen Wert zuweisen, ein Feld, "Genehmigungsstatus". Es ist schwer-codes eine Menge Sachen und hat keine Fehlerüberprüfung.
Der Code sieht eine hartcodierte Website, Ruft eine hartcodierte Dokumentbibliothek und sucht dann das angegebene Element. Dann findet den übergeordneten Ordner des jeweiligen Elements und weist den Statuswert.
Die wichtigste Lehre hier für mich ist, dass die SPItem nicht erhalten Sie Zugriff auf den Ordner. Müssen Sie SPListItem.File verwenden.
Wenn jemand Sorgen zu bieten eine Kritik oder schlagen Sie einen besseren Weg, um den Ordner eines Elements, Bitte terlassen Sie einen Kommentar hin.
<Code>
Verwendung System; Verwendung System.Collections.Generic; Verwendung System.Text; Verwendung Microsoft.SharePoint; Verwendung System.Collections; Namespace Conchango { /// <Zusammenfassung> /// </Zusammenfassung> Klasse ManualFolderUpdate { statische privatevoid Main(Zeichenfolge[] args) { Zeichenfolge msh = "ManualFolderUpdate (v1. 0): "; // msh = "Message-Header" Konsole.WriteLine(msh + "Starten. Ich war zuletzt am 04.08.08."); Zeichenfolge URL = http://localhost/xyzzy; Verwendung (SPSite oSPSite = Neu SPSite(URL)) { Verwendung (SPWeb oSPWeb = oSPSite.OpenWeb()) { SPList DocLib = oSPWeb.Lists["Dokumente"]; Konsole.WriteLine(msh + "Got die Dokumentbibliothek."); Konsole.WriteLine(msh + "Doc Lib Elementanzahl: [" + docLib.ItemCount + "]."); int FolderID = 0; Zeichenfolge NewStatus = "xyzzy"; FolderID = System.Konvertieren.ToInt32(args[0].ToString()); Konsole.WriteLine("Sucht Ordner für Element: [" + FolderID + "]."); SPListItem Li = docLib.GetItemById(FolderID); SPFolder ThisItemFolder = li.File.ParentFolder; Konsole.WriteLine(msh + "Got des übergeordneten Ordners."); NewStatus = Args[1].ToString(); Konsole.WriteLine("Einstellung Status zu [" + NewStatus + "]."); Konsole.WriteLine("Drücke return, das Update oder STRG-C abbrechen zu begehen."); Konsole.ReadLine(); thisItemFolder.Item["Genehmigungsstatus"] = NewStatus; thisItemFolder.Item.Update(); Konsole.WriteLine(msh + "Aktualisierung des Ordners abgeschlossen. Beenden."); } // SPWeb verwenden } // mithilfe von SPSite Konsole.WriteLine(msh + "Beendet."); } // Main } // Klasse foldersync } // Namespace
</Code>
</Ende>