Laden...

Silverlight: Connection zu SharePoint über Object Model

Erstellt von tonikln vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.609 Views
T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 12 Jahren
Silverlight: Connection zu SharePoint über Object Model

Hallo zusammen,

ich versuche eine dynamische Verbindung zu SharePoint herzustellen.

und zwar habe ich 2 sitecollection wo versichedene Listen vorhanden sind.
Ich habe eine Textbox eingebaut, damit der Benutzer eingeben kann, zu welcher Sitecollection er sich verbinden möchte.

Anschließend sollen die Listen in eine Combobox angezeigt werden.

Ich hab sowas änliches schon über den webservice gemacht und da hieß die Methode GetListCollectionAsync().

Kann mir einer evtl. helfen wir ich das über den Object Model realisieren kann ?

MfG


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

F
174 Beiträge seit 2007
vor 12 Jahren

hallo tonikln,


using (ClientContext context = new ClientContext("http://..."))
{
    ListCollection lists = context.Web.Lists;
    context.Load(lists);
    context.ExecuteQuery();
    ...
}

Das würde alle Listen innerhalb vom übergebenen Context ermitteln. Ich glaube SiteCollection übergreifend kannst du mit dem Client Object Model nichts machen. Ganz sicher bin ich mir da aber nicht.

T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 12 Jahren

Danke dir Felix...

was würdest du denn dann empfehlen ?
Soll ich das über den Webservice machen ?

Das problem ist nur folgendes:

Was wäre wenn ich morgen eine weitere Sitecollection anlege, dann muss ich wieder an den Code ran und den WS meiner neuen sitecollection wieder einbinden.

Ich möchte das nämlich gerne unabhängig haben...


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo,

ich habe die Anforderung noch nicht so ganz verstanden.
Was hat es mit der TextBox auf sich und wo genau hast du diese eingebaut?

Im Moment stelle ich mir das ganze so vor:

Du hast eine Silverlight-Anwendung in der eine TextBox eingebunden ist, wo dann der Name der SiteCollection angegeben werden kann. Im Anschluss werden alle Listen, die in der eingegebenen SiteCollection verfügbar sind, ermittelt und in einer ComboBox aufgelistet. Stimmt das so in etwa?

Folgende Fragen habe ich noch:

  1. was ist der Hintergrund?
  2. Muss es unbedingt Silverlight sein? Wenn du das über ein gewöhnliches WebPart machst, hast du Zugriff aufs SharePoint Objekt Modell und somit auch mehr Möglichkeiten.
T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 12 Jahren

Hallo,

ich habe die Anforderung noch nicht so ganz verstanden.
Was hat es mit der TextBox auf sich und wo genau hast du diese eingebaut?

Die Textbox ist auf der Mainpage, dort gibt der user den link ein
z.B. http://mainserver.de/sitecollection

Im Moment stelle ich mir das ganze so vor:

Du hast eine Silverlight-Anwendung in der eine TextBox eingebunden ist, wo dann der Name der SiteCollection angegeben werden kann. Im Anschluss werden alle Listen, die in der eingegebenen SiteCollection verfügbar sind, ermittelt und in einer ComboBox aufgelistet. Stimmt das so in etwa?

stimmt vollkommen

Folgende Fragen habe ich noch:

  1. was ist der Hintergrund?
  2. Muss es unbedingt Silverlight sein? Wenn du das über ein gewöhnliches WebPart machst, hast du Zugriff aufs SharePoint Objekt Modell und somit auch mehr Möglichkeiten.
  1. Der Hintergrund ist, dass ich mit einer Silverlight anwendung beliebig viele listen auf knopfdruck anzeigen lassen kann.
  1. Ja muss es leider 😦

90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

F
174 Beiträge seit 2007
vor 12 Jahren

Die Textbox ist auf der Mainpage, dort gibt der user den link ein
z.B.
>

Also du hast mit dem Client Objekt Modell soweit ich weiß keinen Zugriff auf WebApplication- und Farmobjekte. D.h. die oberste Ebene (der ClientContext) ist die SiteCollection.

Was du aber machen kannst ist folgendes:

Wenn der Benutzer die oben genannte URL eingibt, dann versuchst du eine Instanz von ClientContext zu erzeugen und übergibst die URL. Wenn das geklappt hat und du Zugriff auf ClientContext.Site und ClientContext.Web hast, dann existiert die SiteCollection auch. Und in diesem Fall kannst du dann über ClientContext.Web.Lists alle Listen ermitteln.

Trotzdem kommt mir die Anforderung etwas komisch vor. Weil egal wo du die Silverlight Application einbindest ... du befindest dich so oder so in einer bestimmten Site.

T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 12 Jahren

hi,

hast du zufällig einen Link für mich, wo Beispiele vorhanden sind ?

das wäre sehr hilfreich 😃.

Gruß


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo,

also auf die Schnelle habe ich das hier gefunden.

Da werden auch über eine Silverlight Application Listen-Details ausgelesen und angezeigt. Allerdings wird in dem Beispiel der ClientContext mit "ApplicationContext.Current.Url" initialisiert. Das passt ja für deinen Fall nicht ganz. Du musst den ClientContext mit der übergebenen Url initialisieren und prüfen, ob es geklappt hat.

EDIT:
Evtl. ist dieses Codesample auch interessant.

T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 12 Jahren

Supeeeeer das funktioniert 😃

allerdings klappt das nur für SharePoint 2010 😦
Bei 2007 kommt keine Verbindung zustande, d.h. mit SP 2007 ist das nicht ganz kompatibel.

Meine Frage ist jetzt noch, kann man das auch mit 2007 kombinieren ?


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

F
174 Beiträge seit 2007
vor 12 Jahren

Meine Frage ist jetzt noch, kann man das auch mit 2007 kombinieren ?

Hallo,

nein, das klappt leider nur in SharePoint 2010. Das Client Objekt Modell ist neu in 2010. In 2007 musst du über die normalen Webservices arbeiten.

T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 12 Jahren

Hi...
erstmal danke für die schnelle antworten die ich von dir erhalten habe, aber eine Frage habe ich noch 😃

In ASP.NET habe ich etwas ähnliches gemacht. Ich habe Daten über den WebService geholt und sie mir dann in einem DataSet gespeichert.

Könntest du mir evtl. wie ich die Daten, die ich über das OM erhalte in einem DataSet oder in einem DataTable speichern kann ?

Das benötige ich nämlich, damit ich nicht für z.B. 20 Listen immer neu Mappen muss. Die Daten sollen automatisch in die DataGridView eingebunden werden.


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!

F
174 Beiträge seit 2007
vor 12 Jahren

Hallo,

ein Beispiel dazu, wie du die Daten ermitteln kannst, findest du hier.
Du brauchst ja im Anschluss nur noch die Datensätze durchlaufen und in deine DataTable oder wohin auch immer speichern.

T
tonikln Themenstarter:in
137 Beiträge seit 2006
vor 12 Jahren

Hi,

das problem ist aber, dass ich in silverlight keine datatable oder ähnliches habe.
was empfehlt ihr mir `?

Gruß


90% aller Fehler sitzen zwichen tastatur und Stuhl!!!