Am Wochenende habe ich mich ein wenig mit dem SharePoint 2010 Client Object Model beschäftigt. Die ein oder andere Erkenntnis will ich euch natürlich nicht vorenthalten :-).
Dieses neue Objektmodell soll die Entwicklung von clientseitigen Anwendungen in SharePoint 2010 erleichtern und wird auch von SharePoint Foundation 2010 unterstützt.
Die Namensgebung der Objekte ist denkbar einfach. SPWeb, SPSite oder SPList-Objekte werden im Client Object Model ohne den SP-prefix betitelt: Web, Site, List.
Und nun an's Eingemachte!
(Um der Schritt-für-Schritt-Anleitung folgen zu können, muss SharePoint 2010 und Visual Studio 2010 Beta 2 in einer Entwicklungsumgebung vorhanden sein.)
Schritt 1 - Visual Studio 2010 Projekt erstellen
- Öffne Visual Studio 2010
- Neues Projekt erstellen (Windows Forms Application, C#)

- Build Output einstellen: AnyCPU oder x64

Schritt 2 - Client Object Model referenzieren
- Rechtsklick auf References und Add Reference auswählen

- Unter Browse ins 14-Verzeichnis navigieren:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\
- und die folgenden Dateien auswählen:
- Microsoft.SharePoint.Client.dll
- Microsoft.SharePoint.Client.Runtime.dll


- Nun natürlich noch das folgende using-Statement hinzufügen:
using SP = Microsoft.SharePoint.Client;
Das Ergebnis sollte wie folgt aussehen:

Schritt 3 - Anwendung mit Steuerelementen ausstatten
In meiner Beispielanwendung habe ich die folgenden Steuerelemente verwendet:
- Textbox (zur Eingabe der URL, oben, Name: tb_Url)
- Button (Start der Abfrage, oben, Name: btn_Go)
- PictureBox (Anzeige SharePointJungs-Logo, oben, Name: pictureBox1)
- TreeView (Anzeige der SharePoint-Listen, mitte, Name: tv_WebContent)
- Textbox (Anzeige der Informationen, unten, Name: tb_Info)

Schritt 4 - Logik :)
Doppelklick auf den Button und den folgenden Quellcode hinzufügen:
private void btn_Go_Click(object sender, EventArgs e)
{
tv_WebContent.Nodes.Clear();
tb_Info.Clear();
using (SP.ClientContext clientctx = new SP.ClientContext(tb_Url.Text.ToString()))
{
var web = clientctx.Web;
clientctx.Load(web);
clientctx.Load(web.Lists);
clientctx.ExecuteQuery();
TreeNode node = tv_WebContent.Nodes.Add(web.Title);
node.ToolTipText = web.Description;
foreach (SP.List list in web.Lists)
{
//lbLists.Items.Add(list.Title);
TreeNode subnode = node.Nodes.Add(list.Title);
subnode.ToolTipText = list.Description;
}
tv_WebContent.ExpandAll();
}
}
Doppelklick auf das TreeView-Steuerelement und den folgenden Code einfügen:
private void tv_WebContent_AfterSelect(object sender, TreeViewEventArgs e)
{
if (tv_WebContent.SelectedNode.Parent != null)
{
using (SP.ClientContext clientctx = new SP.ClientContext(tb_Url.Text.ToString()))
{
var list = clientctx.Web.Lists.GetByTitle(tv_WebContent.SelectedNode.Text.ToString());
clientctx.Load(list);
clientctx.ExecuteQuery();
string infos =
string.Format("Title: {0}ItemCount: {1}IsHidden: {2}GUID: {3}Attachements: {4}",
list.Title + Environment.NewLine,
list.ItemCount + Environment.NewLine,
list.Hidden.ToString() + Environment.NewLine,
list.Id.ToString() + Environment.NewLine,
list.EnableAttachments);
tb_Info.Text = infos;
}
}
else
{
using (SP.ClientContext clientctx = new SP.ClientContext(tb_Url.Text.ToString()))
{
var web = clientctx.Web;
clientctx.Load(web);
clientctx.Load(web.Lists);
clientctx.Load(web.Webs);
clientctx.ExecuteQuery();
string infos =
string.Format("Title: {0}SubWebs: {1}ListCount: {2}GUID: {3}LCID: {4}",
web.Title + Environment.NewLine,
web.Webs.Count.ToString() + Environment.NewLine,
web.Lists.Count.ToString() + Environment.NewLine,
web.Id.ToString() + Environment.NewLine,
web.Language.ToString());
tb_Info.Text = infos;
}
}
}
Schritt 5 - Ergebnis begutachten
In die Textbox kann nun die URL des SharePoint 2010-Webs eingetragen werden. Mit dem Klick auf Go! wird die Abfrage gestartet.
Ein Klick auf den Root-Knoten zeigt Informationen zur Website an:

Informationen zur Liste werden wie folgt angezeigt:

Ich hoffe, ich konnte euch die Entwicklung einer clientseitigen Anwendung etwas näher bringen.
Die fertige Solution kann hier herunter geladen werden:
Download Beispielanwendung - Client Object Model
Technorati Tags:
SharePoint 2010, Entwicklung, Client Object Model
Zum Sammeln und Tauschen: