2009-06-15 4 views
2

Ich möchte "Query Value" zum BDC List WebPart von (Provider) businessdata Filter Webpart bereitstellen. Beim Versuch, eine Verbindung herzustellen, erhalte ich einen Fehler. "Der Provider-Verbindungspunkt (BusinessDataFilterWebPart) und der Consumer-Verbindungspunkt" BusinessDataListWebPart "verwenden nicht dieselbe Verbindungsschnittstelle."BDC-Webpart-Verbindung Schnittstellenfehler

Folgendes ist mein Code-Snippet.

System.Web.UI.WebControls.WebParts.WebPart providerWebPart = 
       webPartManager.WebParts[filterWebPart.ID]; 
      ProviderConnectionPointCollection providerConnections = 
       webPartManager.GetProviderConnectionPoints(providerWebPart); 
      ProviderConnectionPoint providerConnection = null; 
      foreach (ProviderConnectionPoint ppoint in providerConnections) 
      { 
       if (ppoint.InterfaceType == typeof(ITransformableFilterValues)) 
        providerConnection = ppoint; 

      } 
      System.Web.UI.WebControls.WebParts.WebPart consumerWebPart = 
       webPartManager.WebParts[consumer.ID]; 
      ConsumerConnectionPointCollection consumerConnections = 
       webPartManager.GetConsumerConnectionPoints(consumerWebPart); 
      ConsumerConnectionPoint consumerConnection = null; 

      foreach (ConsumerConnectionPoint cpoint in consumerConnections) 
      { 
       if (cpoint.InterfaceType == typeof(IWebPartParameters)) 
        consumerConnection = cpoint; 
      } 

SPWebPartConnection newConnection = webPartManager.SPConnectWebParts(
       providerWebPart, providerConnection, consumerWebPart, consumerConnection); 

Antwort

0

Es sieht so aus, als ob Sie zwei verschiedene Verbindungsschnittstellen vergleichen. Ihre Provider-Verbindung implementiert ITransformableFilterValues ​​und Ihre Consumer-Verbindung implementiert IWebPartParameters.

Ich weiß nicht viel über den Code, den Sie hier geschrieben haben, da ich selten Verbindungen zwischen Webparts in Code schreibe. Der springende Punkt bei den Verbindungen ist jedoch, dass der Verbraucher und der Anbieter die gleiche Schnittstelle bereitstellen und erwarten müssen.

Haben Sie versucht, diese beiden Webparts in der Browseroberfläche miteinander zu verbinden?

0

Meine direkte Erfahrung mit diesem Problem ist mit dem Query String Filter Webpart als Provider und dem Report Viewer Webpart als Consumer, aber das Problem war das gleiche.

Die ITransformableFilterValues-Schnittstelle kann nicht von der IWebPartParameters-Schnittstelle verwendet werden. Jedes Element in der Auflistung der Verbindungspunkte implementiert jedoch einen anderen Schnittstellentyp.

Überprüfen Sie in Ihrem Debugger die anderen Schnittstellentypen, die sowohl von ConsumerConnectionPointCollection als auch von ProviderConnectionPointConnection implementiert wurden. Wenn beide Auflistungen über Verbindungen verfügen, die denselben Schnittstellentyp implementieren, verwenden Sie diesen Schnittstellentyp in den Bereichen, in denen Sie den Schnittstellentyp überprüfen.

Wenn es keine direkte Übereinstimmung gibt, sollten Sie experimentieren, um die richtige Kombination zu finden.

0

Sie müssen den richtigen Transformator und die Überschreibungsmethode mit der Umwandlung als Parameter verwenden, damit die beiden Schnittstellen verbinden/transformieren können. Aus der MSDN-Dokumentation auf dem TransformableFilterValuesToParametersTransformer: "Erlaubt Standardfiltern, der Microsoft.SharePoint.WebPartPages.ITransformableFilterValues ​​implementieren, einen Webpart zu verbinden, die IWebPartParameters verbrauchen"

var transformer = new TransformableFilterValuesToParametersTransformer(); 
       transformer.ProviderFieldNames = new string[] { "DocumentIdForCurrentPage" }; 
       transformer.ConsumerFieldNames = new string[] { "DocumentId" }; 

webPartManager.SPConnectWebParts ( providerWebPart, providerConnection, consumerWebPart, consumerConnection, Transformator);