Ik houd dit probleem tegenkomt en de Google nooit lijkt te begrijpen wat ik wil doen, dus ik dacht dat ik zou dit opschrijven.
Ik heb gedaan een heleboel gebeurtenis ontvanger foutopsporing in de laatste week of twee. De ER is gedefinieerd tegen een documentbibliotheek. De afzonderlijke items in de documentbibliotheek zijn nauw gerelateerd aan hun bovenliggende mappen. Dus, Ik krijg altijd de map van het item voor verschillende manipulaties. Tijdens het opsporen van fouten, Ik nodig had om de metagegevens van een map voor een bepaald item waarvan ik weet dat de ID bijwerken.
Hier is een beetje consoletoepassing (ontworpen om te draaien op de server in de farm) dat duurt twee argumenten: de ID van een item en een waarde toewijzen aan een veld, "Goedkeuringsstatus". Het is moeilijk een heleboel dingen codes en heeft geen foutcontrole.
De code ziet er een hard gecodeerde site, krijgt een hard gecodeerde documentbibliotheek en vervolgens vindt het aangegeven item. Vervolgens vindt de bovenliggende map van dat item en wordt de statuswaarde toegewezen.
De belangrijke les hier voor mij is dat SPItem niet u toegang tot de map krijgt. U moet gebruiken SPListItem.File.
Als iemand cares te bieden een kritiek of suggereren een betere manier om de map van een item, laat alstublieft een reactie.
<code>
met behulp van Systeem; met behulp van System.Collections.generic; met behulp van System.Text; met behulp van Microsoft.SharePoint; met behulp van System.Collections; naamruimte Conchango { /// <Samenvatting> /// </Samenvatting> klasse ManualFolderUpdate { statische VOID Main(tekenreeks[] args) { tekenreeks MSH = "ManualFolderUpdate (v1.0): "; // MSH = "berichtkop" Console.WriteLine(MSH + "Opstarten. Ik is het laatst bewerkt op 08/04/08."); tekenreeks URL = http://localhost/xyzzy; met behulp van (SPSite oSPSite = Nieuw SPSite(URL)) { met behulp van (SPWeb oSPWeb = oSPSite.OpenWeb()) { SPList docLib = oSPWeb.Lists["Documenten"]; Console.WriteLine(MSH + "Got de documentbibliotheek."); Console.WriteLine(MSH + "Doc lib item count: [" + docLib.ItemCount + "]."); int FolderID = 0; tekenreeks NewStatus = "xyzzy"; FolderID = System.Converteren.ToInt32(args[0].ToString()); Console.WriteLine("Op zoek naar map voor object: [" + FolderID + "]."); SPListItem Li = docLib.GetItemById(FolderID); SPFolder thisItemFolder = li.File.ParentFolder; Console.WriteLine(MSH + "Got de bovenliggende map."); NewStatus = args[1].ToString(); Console.WriteLine("Status is ingesteld op [" + NewStatus + "]."); Console.WriteLine("Druk op return om te plegen de update of de CTRL-C om af te breken."); Console.ReadLine(); thisItemFolder.Item["Goedkeuringsstatus"] = NewStatus; thisItemFolder.Item.Update(); Console.WriteLine(MSH + "Klaar bent met het bijwerken van de map. Verlaten."); } // met behulp van SPWeb } // met behulp van SPSite Console.WriteLine(MSH + "Afgewerkt."); } // Main } // klasse foldersync } // naamruimte
</code>
</einde>