Frage

Ich habe den besten Weg, um Web -Teile zur Laufzeit dynamisch zu verbinden. EsSentailly, die Anwendung ermöglicht mehrere unterschiedliche Anwendungsgruppen, Webteile zu erstellen, die im SharePoint -Front -End konsumiert werden. Alle Webteile müssen Verbraucher und Anbieter automatisch erkennen, um zur Laufzeit Verbindungen zu erstellen.

Wir möchten Webparts entdecken und automatisch eine Verbindung zu anderen kompatiblen Webparts herstellen. Wenn ein Benutzer die beiden kompatiblen Teile zu einer Seite hinzufügt, sollten die Teile in der Lage sein, die entsprechenden Verbindungen zu erstellen. Wir haben eine gut definierte Schnittstelle zum Übergeben von Daten zwischen den Teilen. Das einzige Problem ist daher, wie die Verbindungen verwaltet werden. Um klar zu sein, wir möchten nicht, dass Benutzer sich Sorgen machen, dass sie selbst Verbindungen herstellen müssen.

Für unsere Zwecke bedeutet "bester Weg" am effizientesten, eleganten und/oder Standard. Wir möchten etablierte SharePoint -Designmuster so weit wie möglich befolgen, aber die Code -Effizienz ist etwas wichtig.

Ich konnte einen Proof of Concept entworfen, der eine Basis -Web -Teil -Klasse verwendet, um dies während des Oninit -Ereignisses jedes unterklassigen Webparts zu tun. Das Oninit -Ereignis erfasst den SPWebPartManager der aktuellen Seite und iterat durch jeden Teil, der Verbraucher- und Anbieterverbindungen für jeden Webpart von der Basisklasse erstellt:

SPWebPartManager spManager = SPWebPartManager.GetCurrentWebPartManager(Page) as SPWebPartManager;
foreach (BaseWebPart provider in parts)
{
    foreach (BaseWebPart consumer in parts)
    {
        if (provider != consumer)
        {
            string connectionId = string.Format("WebPartConnection{0}{1}", consumer.ID, provider.ID);
            SPWebPartConnection conn = spManager.SPWebPartConnections[connectionId];
            if (conn == null)
            {
                conn = new SPWebPartConnection()
                {
                    ID = connectionId,
                    ConsumerID = consumer.ID,
                    ConsumerConnectionPointID = "WebPartConnectableConsumer",
                    ProviderID = provider.ID,
                    ProviderConnectionPointID = "WebPartConnectableProvider"
                };
                spManager.SPWebPartConnections.Add(conn);
            }
            connectionCreated = true;
        }
    }
}
War es hilfreich?

Lösung

Das WPSC verfügt über ein Veröffentlichung/Abonnement -Ereignismodell, das wahrscheinlich helfen wird. (In diesem Modell erhöhen Anbieter immer die Veranstaltung, auch wenn keine Abonnenten auf der Seite sind.)

Insbesondere die Methoden "RegisterForEvent" und "RaisEEvent" finden Sie in der WPSC -Referenz.

http://msdn.microsoft.com/en-us/library/ms414515.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top