Gabriele Del Giovine Blog (Z80 powered brain...)


Un blog su quel che faccio (o cerco di fare...)
Calendario
aprile 2024
lmmgvsd
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
Archivio Posts
Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005
Links
    Mappa
    Blogs Amici
      Statistiche
      • Views Home Page: 301.437
      • Views Posts: 365.875
      • Views Gallerie: 256
      • n° Posts: 163
      • n° Commenti: 198

      SharepointDAL - Parte 1

      Tanto tempo fa vi avevo promesso che avrei parlato di una classe per la gestione dell'accesso ai dati di Sharepoint.

      Bene, visto che ora si va verso l'uso di LINQ e di Visual Studio 2008, ho deciso che SharepointDAL 0.1 ha fatto il suo tempo è può essere rilasciata alla comunità degli sviluppatori. SharepointDAL fa uso dell'Object Model nativo, questo significa che è pensato per funzionare su una macchina dove è installato almeno WSS 3.0.
      SharepointDAL è scritto in VB.NET e nemmento in modo tanto elegante: è quello che è  e probabilmente per come è scritto farà inorridire i DevGuri puristi del Framework.....

      Per iniziare dopo aver scaricato i sorgenti dovete creare in una site collection Sharepoint una lista (o una raccolta documenti) con le colonne che volete.
      Il primo passo è quello di referenziale la DLL SharepointDAL.dll e creare una classe che mappi la struttura della lista che volete usare. Un esempio:

      Public Class TestList
      Inherits SharepointDAL.List

      Sub New()
          MyClass.ListName = "TESTLIST"
         
      MyClass.InterfaceMode = InterfaceModeEnum.Public
      End Sub

      End Class

      Come potete notare la nostra classe TestList eredita dalla classe base SharepointDAL.List. Questa classe (List) implementa tutti i metodi per interagire con una Lista Sharepoint (la classe SPList)
      Occorre ora definire le colonne che vogliamo usare nella nostra classe. Non è obbligatorio dichiarare tutte le colonne della lista, ma solo quelle che vogliamo usare e la colonna "ID" (quella che identifica in maniera univoa l'Item nella lista Sharepoint).
      Possiamo usare diversi metodi. Il più breve (ed orrido) è quello di usare dei Public member. Cosi:

      Public Title As New SharepointDAL.Field("Title", "Title", SharepointDAL.SPFieldType.Text)

      Dove Title è il nome del membro che andiamo a definire. Il metodo Field.New richiede in questo caso i seguenti parametri:
      (ByVal Title As String, ByVal InternalName As String, ByVal SPFieldType As SharepointDAL.SPFieldType)

      Title è il display name della colonna Sharepoint, InternalName il suo InternalName, SPFIeldType è l'enumerazione del tipo dato.
      Quello appenda visto è un modo molto veloce per definire la classe. E' quello inteso di default dalla classe .List.
      Se volete usarlo dovete impostare la proprietà  .InterfaceMode al valore InterfaceMode.Public

      Altro modo, più canonico, per definire la classe è questo

      Public Class TestList
       Inherits SharepointDAL.List
       Private pTitle As New SharepointDAL.Field("Title", "Title", SharepointDAL.SPFieldType.Text)
       
      Property Title() As SharepointDAL.Field
       Get
           Title = pTitle
       End Get
       Set(ByVal value As SharepointDAL.Field)
           pTitle = Title
       End Set
       End Property

      Sub New()
          MyClass.ListName = "TESTLIST"
         
      MyClass.InterfaceMode = InterfaceModeEnum.Property
      End Sub

      End
      Class

      I possibili valori di InterfaceModeEnum sono:

      Public Enum InterfaceModeEnum
      [Public] = 0
      [Property] = 1
      [Private] = 2
      End Enun

      Interessante è il modo Private dato che consente di dichiarare la classe in questo modo

      Public Class I_Sedi_Lavoro
        
      Inherits SharepointDAL.List
         Private _Sede As New SharepointDAL.Field("Sede", "Title", SharepointDAL.SPFieldType.Text)
         Private _ID As New SharepointDAL.Field("ID", "ID", SharepointDAL.SPFieldType.Counter)
        
      Property
      Sede() As String
         Get
            Sede = _Sede.Value.ToString
         End Get
         Set(ByVal value As String)
            _Sede.Value = value
         End Set
      End Property

      Property ID() As Integer
          Get
          ID = _ID.Value
          End Get
          Set(ByVal value As Integer)
          _ID.Value = value
          End Set
      End Property

      Public
      Sub New()
         MyClass.InterfaceMode = InterfaceModeEnum.Private
         MyClass.ListName = "Sedi Lavoro"
      End Sub
      End Class

      Dopo aver creato la classe possiamo iniziare ad usarla nel nostro programma.
      Per prima cosa dobbiamo dichiararla

      Dim myTestList As New TestList

      Quindi invocare il metodo .Init

      TestList.Init("http://RootSite", "Site") dove il primo parametro è la url del sito principale della sitecollection ed il secondo è il nome del Web. Il primo parametro è in pratica la Url di SPSite mentre il secondo è la Url di SPWeb. Esempio: se la vostra lista si trova in http://RootSite/Test i due parametri saranno  rispettivamente "http://RootSite" e "Test". Nel caso fosse "http://RootSite/Test/Test" sarebbero "http://RootSite" e "Test/Test".

      Una volta inizializzata l'istanza della classe List potete chiamare il metodo .LoadAll. Questo metodo non fa altro che fare una query della lista, caricare la collection SPListItemCollection e un po di altre cose....
      I metodo .MoveNext, .MovePrevious, .MoveFirst e .MoveLast permettono di spostarsi nella collection SPListItemCollection. Gli oggetti Sharepoint sono disponibili come proprietà e sono riconoscibili perchè iniziano con il carattere "_". Le colonne che avere definito come oggetti di classe .Field mettono a disposizione il loro valore per mezzo della proprietà .Value
      Ad esempio il valore della colonna "Title" sarà disponibile usando questa sintassi:

      Dim
      Title As String = TestList.Title.Value

      .Value ovviamente è Read/Write  mentre il metodo .Update lascio a voi indovinare cosa fa.

      TestList.Value="Nuovo Titolo"
      TestList.Update

      Esplorate l'oggetto List e divertitivi. Per oggi abbiamo finito. Alla prossima parte.
       


      Categoria: Sharepoint
      venerdì, 04 lug 2008 Ore. 01.30
      Copyright © 2002-2007 - Blogs 2.0
      dotNetHell.it | Home Page Blogs
      ASP.NET 2.0 Windows 2003