ARTICLE

Set hold to documents based on Metadata value in SharePoint 2010

Posted by Vijai Anand Articles | SharePoint 2010 May 26, 2011
In this article we will be seeing how to set hold to documents based on Metadata values in SharePoint 2010.
Reader Level:

In this article we will be seeing how to set hold to documents based on Metadata values in SharePoint 2010.

In "Shared Documents" I have created metadata column "Metadata Col". Based on the metadata value documents will be set to hold.

Shared Documents has the following documents and documents having the "Metadata Col" value as "Friday" will be set to hold.

Share1.gif

Steps Involved:

  • Open Visual Studio 2010.
  • Go to File => New => Project.
  • Select "Console Application" template from the installed templates.
  • Add the following references.

    • Microsoft.SharePoint.dll
    • Microsoft.Office.Policy.dll
     
  • Add the following namespaces.

    • using Microsoft.SharePoint;
    • using Microsoft.Office.RecordsManagement.Holds;
     
  • Replace Program.cs with the following code.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    using Microsoft.Office.RecordsManagement.Holds; 

    namespace Holds
    {
        class Program
        {

           static void Main(string[] args)
            {
                using (SPSite site = new SPSite("http://serverName:22222/sites/TestSite/"))
                {
                    using (SPWeb web = site.RootWeb)
                    {
                        SPList list = web.Lists["Shared Documents"];
                        SPListItemCollection itemColl = list.Items;
                        foreach (SPListItem item in itemColl)
                        {
                            string value = item["Metadata Col"].ToString();
                            string[] metadataValues = value.Split('|');
                            if (metadataValues[0] == "Friday")
                            {
                                SPList listHolds = web.Lists["Holds"];
                                SPListItem itemHold = listHolds.Items[0];
                                Hold.SetHold(item, itemHold, "Hold added");
                            }
                        }
                    }
                }
            }
        }
    }

     

Login to add your contents and source code to this article
post comment
     
COMMENT USING
PREMIUM SPONSORS
DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and add new content to existing PDF documents from within your applications.
Get Career Advice from Experts
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Get Career Advice from Experts