Quick dhe Easy: Get SPFolder e SPItemList

Unë mbaj në drejtimin e këtij problemi dhe Google nuk duket për të kuptuar atë që unë dua të bëj, kështu që unë i realizuar artistikisht unë do të shkruaj këtë poshtë.

Unë kam qenë duke bërë një shumë të pranuesit debugging ngjarje në javën e kaluar apo dy. The ER is defined against a document library. The individual items in the document library are tightly related to their parent folders. Kështu, I am always getting the folder of the item for various manipulations. While debugging, I needed to update the metadata of a folder for a specific item whose ID I know.

Here’s a little console application (designed to run on server in the farm) that takes two arguments: the ID of an item and a value to assign to a field, "Approval Status". It hard codes a lot of stuff and has no error checking.

The code looks up a hard coded 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.

If anyone cares to offer a critique or suggest a better way to get the folder of an item, ju lutemi të lënë një koment.

<code>
përdorim Sistem;
përdorim System.Collections.Generic;
përdorim System.Text;
përdorim Microsoft.SharePoint;
përdorim System.Collections;

namespace Conchango
{
    /// <përmbledhje>
 /// </përmbledhje>
 klasë ManualFolderUpdate
    {
        i pandryshueshëm pavlefshme Kryesor(varg[] args)
        {
            varg msh = "ManualFolderUpdate (v1.0): "; // msh = "Message Header"

 Konsol.WriteLine(msh + "Starting up.  I was last modified on 08/04/08.");

            varg url = http://localhost/xyzzy;

            përdorim (SPSite oSPSite = i ri SPSite(url))
            {

                përdorim (SPWeb oSPWeb = oSPSite.OpenWeb())
                {
                    SPList docLib = oSPWeb.Lists["Documents"];

                    Konsol.WriteLine(msh + "Got the document library.");

                    Konsol.WriteLine(msh + "Doc lib item count: [" + docLib.ItemCount + "].");

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

                    FolderID = System.Convert.ToInt32(args[0].ToString());
                    Konsol.WriteLine("Seeking folder for item: [" + FolderID + "].");

                    SPListItem li = docLib.GetItemById(FolderID);

                    SPFolder thisItemFolder = li.File.ParentFolder;

                    Konsol.WriteLine(msh + "Got the parent folder.");

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

                    Konsol.WriteLine("Press return to commit the update or CTRL-C to abort.");

                    Konsol.Linja leximi();

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

                    Konsol.WriteLine(msh + "Finished updating the folder.  Exiting.");

                } // using SPWeb

            } // using SPSite

 Konsol.WriteLine(msh + "Finished.");

        } // Kryesor

    } // class foldersync
} // namespace
</code>

</fund>

Abonohen në blogun tim.

Technorati Tags:

Lini një Përgjigju

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar *