Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get all document libraries BUT Form Templates, Style, Customized Reports

I'm building a webpart for SharePoint 2010 to get all the document libraries with usefull info for the user. This means, docs that users uploaded, etc. I don't want to show libraries such as Form Templates, Style Library, Customized Reports, etc...

I just want to show only the document libraries with usefull info, as Shared Documents, or any other users create in the future, is that possible?

Currently, my logic looks like this:

SPListCollection docLibraryColl = wb.GetListsOfType(SPBaseType.DocumentLibrary);

Guid docLibFeatId = new Guid("00bfea71-e717-4e80-aa17-d0c71b360101");

foreach (SPList list in docLibraryColl)
{
    if (list.TemplateFeatureId == docLibFeatId && !list.Hidden)
    {
        SPDocumentLibrary doclib = (SPDocumentLibrary)list;
        //rest of the logic here...  
    }
}

I've read here that Guid 00bfea71-e717-4e80-aa17-d0c71b360101 will return only libraries with MS Document Library template, but I'm still getting those undesired libraries in the results.

like image 727
Brian Roisentul Avatar asked Jan 05 '11 16:01

Brian Roisentul


2 Answers

What's wrong with excluding the libraries you don't want in your if?

...
if (!list.Hidden && list.title != "Style Library" && list.title != "Form Templates")
...

You are already selecting the BaseType DocumentLibrary, so you will only receive document libraries, unfortunately form templates is a doclib too, so you will always get it in your selection.

like image 198
Dennis G Avatar answered Sep 21 '22 18:09

Dennis G


I used this piece of code:

 if (docLib.Hidden || !docLib.AllowDeletion || docLib.IsCatalog || docLib.IsSiteAssetsLibrary || docLib.BaseTemplate == SPListTemplateType.WebPageLibrary)
{
   continue;
}
like image 30
yianna Avatar answered Sep 20 '22 18:09

yianna