Alcuni brevi esempi su come accedere in modo sicuro (univoco) agli oggetti (SPWeb, SPList e SPField) di SharePoint 2007 (WSS3 - MOSS).
Con accesso sicuro mi riferisco ai riferimenti che vengono impostati al momento della creazione dell'oggetto e non possono essere cambiati dall'utente tramite l'interfaccia standard di SharePoint. Per il sito e la lista l'url, mentre per il campo il nome interno (l'unica eccezione è il sito a cui può essere cambiata anche l'url da interaccia). Per tutti gli oggetti c'è anche la possibilità di riferirsi tramite il loro Guid, mentre è assolutamente da evitare, per le liste e i campi, l'uso della stringa all'interno dell'indicizzatore, ad esempio web.Lists["La lista"], in quanto si accede tramite il DisplayName/Titolo dell'oggetto.
  • SPWeb - sito

    C#

    SPSite site = new SPSite("http://localhost");
    SPWeb web = site.OpenWeb("/sito1");
    
    oppure

    C#

    SPSite site = new SPSite("http://localhost");
    Guid gWeb = new Guid("CA33A887-7E46-45c6-9DE6-DA92870D50A9");
    SPWeb web = site.OpenWeb(gWeb);
    
  • SPList - lista

    C#

    string urlLista = "/Lists/lista1";
    SPList list = web.GetList(web.ServerRelativeUrl + urlLista);
    
    oppure

    C#

    Guid gList = new Guid("E2AC0EB9-E5D4-4189-8891-84E92655D16B");
    SPList list = web.Lists[gList];
    
    ma non il seguente in quanto usa il display name della lista che può essere cambiato dall'utente

    C#

    string titleList = "La mia lista 1";
    SPList list = web.Lists[titleList];
    
  • SPField - campi

    C#

    SPField fld = list.Fields.GetFieldByInternalName("Title");
    SPListItem item = list.Items[0];
    string title = item[fld.Id] as string;
    
    oppure nel caso dei campi standard uso l'oggetto SPBuiltInFieldId

    C#

    SPFieldText fldTitle = list.Fields[SPBuiltInFieldId.Title] as SPFieldText;
    SPListItem item = list.Items[0];
    string title = item[fldTitle.Id] as string;
    //oppure direttamente
    string title = item[SPBuiltInFieldId.Title] as string;
    
    ma non il seguente in quanto usa il display name del campo che può essere cambiato dall'utente

    C#

    SPField fld = list.Fields["Il titolo"];
    SPListItem item = list.Items[0];
    string title = item["Il titolo"] as string;
    
  • SPContentTypeId - content type (CT)
    supponendo di avere definito il seguente content type id 0x007D65B6644B5B473a9F9AEA2FB74338F9 ed averlo applicato alla lista

    C#

    SPContentTypeId idCT = list.ContentTypes.BestMatch(new SPContentTypeId(0x007D65B6644B5B473a9F9AEA2FB74338F9))
    
    qesto perche quando il CT viene aggiunto alla lista diventerà simile al seguente 0x007D65B6644B5B473a9F9AEA2FB74338F97690228CB20E42dfA5F5975E52297372, ovvero verrà aggiunta una parte che lo rende univoco.
Tags:
SharePoint498 SharePoint 2007218
Potrebbe interessarti anche: