Tuesday, March 25, 2008

MOSS Getting ListItems in a Folder

I have a ListItem that I am deleting. I would also like to delete the folder (SPFolder) that it sits in if there are no longer ListItems inside it. So I need the number of ListItems in a folder if I only have the ListItem I'm about to delete.

Requirement:
Delete a folder (SPFolder) if the ListItem you are about to delete is the last item in the folder.

Code Snippet:

SPSite site = new SPSite("http://MyServer:123/sites/MyCollection");
SPWeb web = site.AllWebs["MyWeb"];
SPList list = web.Lists["My List"];
SPListItem item = list.Items[0]; // Deleting first ListItem

try
{
// Get an the SPFolder object from the Item's Url
SPFolder folder = web.GetFolder(list.ParentWeb.Url + list.Items[0].Url.Substring(0,
list.Items[0].Url.LastIndexOf("/")));

// Use SPQuery.
SPQuery qry = new SPQuery();
qry.Folder = folder;
web = folder.ParentWeb;
SPListItemCollection items = web.Lists[folder.ParentListId].GetItems(qry);

int itemCount =
items .Count;
}
finally
{
// Dispose.
web.Dispose();
site.Dispaose();
}

Useful Links:
Traversing SharePoint List Folder Hierarchies

0 comments: