Coach


In pieno rock ".net" roll
Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005

Sharepont 2010:Creare un document Set da codice

Una delle feature più interessanti di SharePoint 2010 per ECM(Enterprise Content Management) è rappresentata dai Document Set, il concetto di Fascicolo/Pratica molto caro alla pubblica amministrazione.

Per attivare la feature e crearlo dalla user interface è molto facile e potete leggere questo ottimo articolo, diventa un po più complicato farlo da codice.

Come prima cosa bisogna aggiungere la referenza alla Dll Microsoft.Office.DocumentManagement.

Faccio l'esempio di creare un nostro content type che chiamo "Pratica" che eredita da Document Set ed ha solamente i campi Cliente e Ragione Sociale.

Inoltre andiamo a creare una vista che viene utilizzata nella Welcome Page del document Set, per avere una vista diversa su i documenti contenuti nel document set.

Bene dalla nostra feature creouna document library e gli associamo il content type Pratica e poi creo un nuovo item.

Il Codice è il seguente:

const string urlSite = "http://mysite";

using (SPSite site = new SPSite(urlSite))

  {

SPWeb web = site.OpenWeb();

       web.AllowUnsafeUpdates = true;

                 //Creo la lista delle pratiche

    Guid listGuid = web.Lists.Add("Pratiche","",SPListTemplateType.DocumentLibrary);

                SPDocumentLibrary doc = (SPDocumentLibrary)web.Lists[listGuid];

               //imposto le proprietà per la lista

               doc.ContentTypesEnabled = true;

               doc.ContentTypes.Add(web.ContentTypes["Pratica"]);

               doc.OnQuickLaunch = true;

               doc.Update();//salvo le impostazioni per la lista

                /creo la vista per i dettagli che serve per la visualizzazione nel document set

               SPView view = doc.Views.Add("Details", null, "", uint.MaxValue, true, false);

               view.ViewFields.Add("Type");

               view.ViewFields.Add("Name");

               view.ViewFields.Add("Modified");

               view.ViewFields.Add("Author");

               view.ViewFields.Add("Editor");

               view.ViewFields.Add("CheckoutUser");

               view.Update();//salvo la vista

 

                //imposto le proprietà per creare la pratica

                Hashtable properties = new Hashtable(3);

                properties.Add("DocumentSetDescription", "Questa è una pratica di test");

                properties.Add("Cliente", "ACME");

                properties.Add("Ragione_x0020_Sociale", "ACME S.p.a.");

                //recupero l'id del ct pratica

                SPContentTypeId ctId = doc.ContentTypes["Pratica"].Id;

                //Creo la pratica

                Microsoft.Office.DocumentManagement.DocumentSets.DocumentSet.Create(doc.RootFolder, "Pratica di test", ctId, properties,true);

                //imposto le proprietà del template in particolare Shared Fields e vista da utilizzare

                SPContentType ctDS = doc.ContentTypes[ctId];

                Microsoft.Office.DocumentManagement.DocumentSets.DocumentSetTemplate template

                            = Microsoft.Office.DocumentManagement.DocumentSets.DocumentSetTemplate.GetDocumentSetTemplate(ctDS);

                       

                SPField fdDesc =  doc.Fields["Description"];

                template.WelcomePageView = doc.Views["Details"];

                template.SharedFields.Add(fdDesc);

                template.Update(true);//aggiorno il template

                ctDS.Update();//aggiorno il content type

               

                web.AllowUnsafeUpdates = false;

martedì, 21 giu 2011 Ore. 11.35
  • Views Home Page: 239.943
  • Views Posts: 662.398
  • Views Gallerie: 295.600
  • n° Posts: 484
  • n° Commenti: 275












Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003