Monday, November 9, 2009

Guida SharePoint – Introduzione gestione SPList degli SPWeb

Precedenti post:
Questo post è un’introduzione all’utilizzo delle liste di SharePoint.
La maggior parte delle azioni che intraprenderemo con le liste saranno:
  • Ottenere l’elenco
  • Ottenere il contenuto
  • Aggiungerne/rimuoverne
  • Aggiungere/rimuovere il contenuto

 

 

Liste

Le liste sono il modello che utilizza SharePoint per salvare gli items.
Quindi, per un calendario, una lista di tasks o un elenco di documenti, SharePoint utilizza un tipo che definito lista e l’elemento salvato all’interno della lista è definito item.

Le liste standard di SharePoint 2007 sono:
  • Announcements
  • Contacts
  • Discussion Board
  • Links
  • Calendar
  • Tasks
  • Project Tasks
  • Issue Tracking
  • Survey
  • Custom
  • Custom list in Datasheet view
  • KPI (MOSS)
  • Languages and translators (moss)
  • Import spreadsheet
Ognuna di queste liste sono state create per un compito in particolare.
Per delle informazioni più da Site Builder fate pure riferimento al seguente link: http://office.microsoft.com/en-gb/sharepointtechnology/HA011199881033.aspx

Ottenere l’elenco

Per ottenere l’elenco di liste del nostro website ci dovremo riferire alla proprietà Lists della SPWeb la quale ci farà ottenere un’istanza di tipo SPListCollection.
Di seguito un esempio:

namespace ConsoleApplication1 {
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

class Program
{
static void Main(string[] args)
{
SPSite site = new SPSite(args[0]);
SPWeb web = site.AllWebs[0];

foreach (SPList list in web.Lists)
{
Console.WriteLine("{0}{1} - {2} item.", list.Hidden ? "*" : "", list.Title, list.ItemCount);
Console.WriteLine("Autore {0}", list.Author.Name);
Console.WriteLine("{0}", list.Description);
Console.WriteLine("----------------------------------------------------");
}
Console.WriteLine("\nNumero liste trovate: {0}.", web.Lists.Count);
Console.ReadLine();
}
}
}


Elenco degli Item nella lista

Per ottenere la lista degli items all’interno della lista, faremo riferimendo alla proprietà Items dell’istanza SPList; la quale ci restituirà un’istanza di tipo SPListItem:
 
namespace EnumListItems {
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

class Program
{
static void Main(string[] args)
{
SPSite rootSite = new SPSite(args[0]);
SPWeb web = rootSite.AllWebs["Budget Test Site"];
SPList taskList = web.Lists["Tasks"];

foreach (SPListItem item in taskList.Items)
Console.WriteLine("--- {0}:\n\tStato:{1}\n\tProgresso:{2}%\n\tData:{3}", item.Title, item["Status"],
(double)item["PercentComplete"] * 100, item["DueDate"]);

Console.ReadLine();
}
}
}

 
Da notare come accediamo alle proprietà dell’item specificando il nome della colonna o, alternativamente, potremmo specificarne l’index mentre per il Title accediamo direttamente alla proprietà.
Il nome delle colonne varia a seconda della lista utilizzata; vedremo prossimamente perchè è Microsoft ha optato per questa soluzione, quando utilizzeremo una Custom List.

 

Inserire, rimuovere e aggiornare liste

Come con tutti gli altri oggetti di SharePoint, anche le liste posso essere aggiunte, rimosse o modificate.
Tramite la proprietà Lists della classe SPWeb otteniamo l’istanza della classe SPListCollection sulla quale possiamo agire.

Il metodo Add presenta 5 overloads:

 
Ecco un piccolo esempio dove aggiorniamo la lista Custom Task List e cancelliamo la lista Second Task List:

namespace ConsoleApplication1
{
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

class Program
{
static void Main(string[] args)
{
SPSite rootSite = new SPSite(args[0]);
SPWeb rootWeb = rootSite.AllWebs["Budget Test Site"];
SPListTemplate sourceTemplate = rootWeb.ListTemplates["Tasks"];
Guid newListGuid = rootWeb.Lists.Add("Custom Task List", "Custom Task List", sourceTemplate);

SPList newList = rootWeb.Lists[newListGuid];
newList.Description = "Modified Custom Task List";
newList.Update();

Guid secondNewListGuid = rootWeb.Lists.Add("Second Task List", "Second Task List", sourceTemplate);
SPList secondNewList = rootWeb.Lists[secondNewListGuid];
secondNewList.Delete();

Console.WriteLine("List manipulations complete.");
Console.ReadLine();
}
}
}

 


Modificare gli items


Modificare gli elementi, item, all’interno della lista è molto semplice, come tutte le altre operazioni; bisogna solamente far attenzione al nome delle colone, come già scritto nel post sul CAML:


namespace ConsoleApplication1
{
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;

class Program
{
static void Main(string[] args)
{
SPSite rootSite = new SPSite(args[0]);
SPWeb web = rootSite.AllWebs["Budget Test Site"];
SPList taskList = web.Lists["Custom Task List"];

SPListItem newTask = taskList.Items.Add();
newTask["Title"] = "Finish SharePoint 2010 Unleashed";
newTask["DueDate"] = SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Now.AddDays(30));
newTask["PercentComplete"] = 0.1;
newTask.Update();

newTask = taskList.Items.Add();
newTask["Title"] = "This will be deleted.";
newTask.Delete();

taskList.Update();

Console.WriteLine("List item manipulation completed.");
Console.ReadLine();
}
}
}
 

Notate il metodo CreateISO8601DateTimeFromSystemDateTime della classe SPUtility usata per convertire un System.DateTime in un tipo comprensibile a SharePoint.
Ultime note quando lavoriamo con una lookup list.
Controllando gli elementi nella lista otteniamo qualcosa del tipo:
1;#Primo Elemento Lookup List
in questo caso se volessimo cambiare/aggiungere dalla colonna di lookup il valore, allora useremo l’id della tabella di lookup:

myItem["MyColumn"] = "1";

No comments:

Post a Comment