Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

SharePoint Webpart Connections - Webpart als Empfänger und Sender gleichzeitig

Einen Webpart mit Hilfe von Webpart Connections so zu ent­wi­ckeln, dass er sich mit ande­ren aus­tau­schen kann, sollte kein Problem sein. Ist es auch nicht. Für mein spe­zi­el­les Szenario war es jedoch not­wen­dig einen Webpart so zu gestal­ten, dass er sowohl Daten emp­fan­gen kann als auch Daten an andere Webparts ver­sen­den kann. Klingt nach kei­ner gro­ßen Sache. In mei­nem Fall soll­ten drei Webparts Daten mit­ein­an­der aus­tau­schen. Webpart 1 sen­det Daten an Webpart 2. Dieser emp­fängt diese und kann selbst Daten an Webpart 3 ver­sen­den. Es wer­den dem­nach 2 Webpart Connection Interfaces benö­tigt.

Die fol­gen­den bei­den Methoden samt ihrer Attribute müs­sen dazu imple­men­tiert wer­den

Sender
[ConnectionProvider("Parameter")]
public IWebpartConnectionProvider GetProvider()
{
return this;
}

Empfänger
[ConnectionConsumer("Parameter")]
public void RecieveProvider(IWebpartConnectionProvider p)
{
DoSomethingCrazy();
}

Der Empfänger besitzt außer­dem die Implementierung für das Senden, wel­che wie folgt aus­sieht:
[ConnectionProvider("ANewParameter")]
public IWebpartConnectionProvider2 GetProvider()
{
return this;
}

Im Idealfall soll­ten sich die Webparts, im Bearbeitungsmodus der Seite, ver­bin­den las­sen. Ich erhielt jedoch fol­gende Meldung:

"Web Part con­nec­tions can­not be crea­ted or modi­fied at this time. One or more Web Parts on this page con­tains more
infor­ma­tion about the pro­blem"

Natürlich ent­hält kein Webpart auf der Seite mehr Informationen über das Problem…

Lösung

Die Lösung für das Problem ist rela­tiv sim­pel, wenn auch nicht selbst­er­klä­rend. Innerhalb der ConnectionProvider und ConnectionConsumer Attributsangabe muss die ConnectionProvider ID fest­ge­legt wer­den.

[ConnectionProvider("Parameter","ConnectionProviderId")]
public IWebpartConnectionProvider GetProvider()
{
return this;
}

Das Ergebnis sieht dann wie folgt aus:

blank

Der Webpart lässt sich nun als Empfänger als auch Sender kon­fi­gu­rie­ren.

Related Posts

Pin It on Pinterest