Vinnige en maklike: Kry SPFolder van SPItemList

Ek hou wat in hierdie probleem en die Google nooit lyk om te verstaan ​​wat ek wil doen, so het ek gedink ek sou dit neer te skryf.

Ek doen 'n lot van die gebeurtenis ontvanger ontfouting in die laaste week of twee. The ER is defined against a document library. The individual items in the document library are tightly related to their parent folders. So, I am always getting the folder of the item for various manipulations. While debugging, Ek nodig het om die metadata van 'n gids te werk vir 'n spesifieke item wie se ID Ek weet.

Hier is 'n bietjie troos aansoek (ontwerp is om uit te voer op die bediener in die plaas) neem twee argumente: die ID van 'n item en 'n waarde te wys na 'n veld, "Approval Status". It hard codes a lot of stuff and has no error checking.

Die kode lyk op 'n harde gekodeerde site, gets a hard coded document library and then finds the indicated item. It then finds the parent folder of that item and assigns the status value.

The key lesson here for me is that SPItem doesn’t get you access to the folder. You need to use SPListItem.File.

As iemand omgee om 'n kritiek aan te bied of om 'n beter manier om die gids van 'n item te kry voorstel, los 'n comment.

<kode>
die gebruik van Stelsel;
die gebruik van System.Collections.Generic;
die gebruik van System.Text;
die gebruik van Microsoft.SharePoint;
die gebruik van System.Collections;

namespace Conchango
{
    /// <opsomming>
 /// </opsomming>
 klas ManualFolderUpdate
    {
        statiese nietig Main(string[] argumente)
        {
            string MSH = "ManualFolderUpdate (v1.0): "; // MSH = "Boodskap Opskrif"

 Troos.WriteLine(MSH + "Begin.  Ek is vir die laaste wysiging was op 08/04/08.");

            string url = http://localhost/xyzzy;

            die gebruik van (SPSite oSPSite = nuwe SPSite(url))
            {

                die gebruik van (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList Docu Theek = oSPWeb.Lists["Dokumente"];

                    Troos.WriteLine(MSH + "Het jy die dokument biblioteek.");

                    Troos.WriteLine(MSH + "Doc lib item tel: [" + docLib.ItemCount + "].");

                    int FolderID = 0;
                    string NewStatus = "Xyzzy";

                    FolderID = System.Skakel.ToInt32(argumente[0].ToString());
                    Troos.WriteLine("Op soek na die gids item: [" + FolderID + "].");

                    SPListItem Li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Troos.WriteLine(MSH + "Het die ouer-gids.");

                    NewStatus = argumente[1].ToString();
                    Troos.WriteLine("Stel status te [" + NewStatus + "].");

                    Troos.WriteLine("Druk opbrengs die update of Ctrl-C te pleeg om te stop.");

                    Troos.Read line();

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

                    Troos.WriteLine(MSH + "Klaar die opdatering van die gids.  Verlaat.");

                } // die gebruik van SPWeb

            } // die gebruik van SPSite

 Troos.WriteLine(MSH + "Klaar.");

        } // Main

    } // klas foldersync
} // namespace
</kode>

</einde>

Skryf in op my blog.

Technorati Tags:

Laat 'n antwoord

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk *