Compartilhar via


IParametersInConsumer interface

NOTE: This API is now obsolete.

Permite que um consumidor de Web Part para comunicar sua lista de parâmetro para outras Web Parts.

Namespace:  Microsoft.SharePoint.WebPartPages.Communication
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaração
<ObsoleteAttribute("Use System.Web.UI.WebControls.WebParts.IWebPartParameters instead")> _
Public Interface IParametersInConsumer
'Uso
Dim instance As IParametersInConsumer
[ObsoleteAttribute("Use System.Web.UI.WebControls.WebParts.IWebPartParameters instead")]
public interface IParametersInConsumer

Comentários

A parte IParametersInConsumer tem a capacidade de passar argumentos de inicialização para uma parte dede IParametersInProvidere indicar quais parâmetros são necessários. Isso permite que a parte de provedor modificar dinamicamente sua interface do usuário para melhor acomodar as entradas necessárias para o consumidor. Como o IParametersInConsumer pode se conectar a IParametersOutProvidere as interfaces IParametersInProvider , é uma boa opção como um receptor universal de parâmetros.

Além disso, implementações de servidor da interface IParametersInConsumer podem ser conectadas a partes em uma página diferente usando um editor de HTML compatível com o Microsoft SharePoint Foundation, como Microsoft SharePoint Designer. Conectando-se a IParametersInConsumer a IParametersInProvider é uma conexão direta, portanto, nenhuma caixa de diálogo de transformador é exibida. Conectando-se a IParametersInConsumer a interface IParametersOutProvider exibe uma caixa de diálogo de transformador que permite que um usuário final mapear os valores de parâmetro entre as partes. Nesse caso, a parte de consumo não precisa ser projetada com o conhecimento do provedor, pois o usuário final está realizando o mapeamento. No entanto, isso exige um usuário com uma compreensão mais profunda das partes e IParametersInConsumer só pode ser conectada a IParametersOutProvider por um editor de HTML compatível com o SharePoint Foundation, como SharePoint Designer.

Examples

O exemplo de código a seguir mostra um simples servidor IParametersInConsumer Web Part. Ele pode ser conectado a outra Web Part que implementa as interfaces IParametersInProvider ou IParametersOutProvider no servidor. Esta Web Part exibe um parágrafo de texto. Os atributos de estilo de texto, como a família de fontes, cor, espessura e tamanho podem ser definidos por uma Web Part provedora.

Há nove etapas específicas para tornar isso uma Web Part conectável. Essas etapas são numeradas e comentadas no código de exemplo a seguir.

' Common .NET required namespaces.
Imports System
Imports System.ComponentModel
Imports System.Web.UI

' Web Part required namespaces.
Imports Microsoft.SharePoint.WebPartPages
Imports System.Xml.Serialization
Imports System.Web.UI.WebControls

' Code Access Security namespaces.
Imports System.Security
Imports Microsoft.SharePoint.Utilities

' Step #1: Reference the Communication namespace.
Imports Microsoft.SharePoint.WebPartPages.Communication


Namespace ConnectionCodeSamples
   'Step #2: Inherit from the WebPart base class and implement 
   'the IParametersInConsumer interface.
   
   Public Class ServerSideParametersInConsumer
      Inherits WebPart
      Implements IParametersInConsumer
      ' Step #3: Declare the IParametersInConsumer events.
      ' Because this class implements the IParametersInConsumer 
      ' interface, it must 
      ' declare the interface member ParametersInConsumerInit.
      Public Event ParametersInConsumerInit As 
         ParametersInConsumerInitEventHandler Implements 
         IParametersInConsumer.ParametersInConsumerInit
      
      ' Declare variables for keeping track of connection state.
      Private _connected As Boolean = False
      Private _connectedWebPartTitle As String = String.Empty
      Private _registrationErrorMsg As String = "An error has occurred 
         trying to register your connection interfaces."
      Private _registrationErrorOccurred As Boolean = False
      Private _notConnectedMsg As String = "NOT CONNECTED. To set the 
         text style of this Web Part " & _
            "connect it to an appropriate ParametersOut or ParametersIn 
            Provider Web Part."
      Private _missingInput As String = "is a required parameter 
         input."
      
      ' Declare variables for Web Part user interface.
      Private _connectedWebPartLabel As String = "Connected to Web 
         Part"
      Private _webPartDescription As String
      Private _fontFamily As String = String.Empty
      Private _fontColor As String = String.Empty
      Private _fontWeight As String = String.Empty
      Private _fontSize As String = String.Empty
      Private _parametersInReadyFlag As Boolean = False
      Private _noParametersInFlag As Boolean = False
      
      ' Declare variables for parameter attributes.
      Private _fontFamilyParamDescription As String = "Font Family"
      Private _fontFamilyParamDisplayName As String = "Font Family"
      Private _fontFamilyParamName As String = "FFamily"
      Private _fontColorParamDescription As String = "Font Color"
      Private _fontColorParamDisplayName As String = "Font Color"
      Private _fontColorParamName As String = "FColor"
      Private _fontWeightParamDescription As String = "Font Weight"
      Private _fontWeightParamDisplayName As String = "Font Weight"
      Private _fontWeightParamName As String = "FWeight"
      Private _fontSizeParamDescription As String = "Font Size"
      Private _fontSizeParamDisplayName As String = "Font Size"
      Private _fontSizeParamName As String = "FSize"
      
      
      ' Constructor
      Public Sub New()
         ' Set Web Part description.
         _webPartDescription = "This is an example of a IParametersInConsumer Web Part.  The following "
         _webPartDescription += "text style attributes can be set when passed as parameters via a Web Part Connection: "
         _webPartDescription += "font color, weight, size, and family. This Web Part can only be connected to "
         _webPartDescription += "another part which implements the IParametersOutProvider or IParametersInProvider interface. "
         _webPartDescription += "A Windows SharePoint Services-compatible HTML editor is required to connect this Web Part to IParametersOutProvider."
      End Sub
      
      
      ' Step #4: Override the EnsureInterfaces method and call 
      ' RegisterInterface method.
      ' The EnsureInterfaces method is called by the Web Part 
      ' infrastructure during the ASP.NET PreRender event 
      ' and allows the part to register all of its connection 
      ' interfaces.
      Public Overrides Sub EnsureInterfaces()
         ' If your Web Part is installed in the bin directory and the 
         ' Code Access Security (CAS) setting doesn't 
         ' allow Web Part Connections, an exception will be thrown. To 
         ' allow your Web Part to behave 
         ' well and continue working, a try/catch block should be used 
         ' when attempting to register interfaces.
         ' Web Part Connections will only work if the level attribute 
         ' of the <trust> tag in the web.config file is set to 
         ' WSS_Minimal, WSS_Medium, or Full. By default a new 
         ' SharePoint site is installed with the trust level set to 
         ' WSS_Minimal.
         Try
            ' Register the IParametersInConsumer interface.
            ' <param name="interfaceName">Friendly name of the 
            ' interface that is being implemented.</param>
            ' <param name="interfaceType">Specifies which interface is 
            ' being implemented.</param>
            ' <param name="maxConnections">Defines how many times this 
            ' interface can be connected.</param>
            ' <param name="runAtOptions">Determines where the interface 
            ' can run.</param>
            ' <param name="interfaceObject">Reference to the object 
            ' that is implementing this interface.</param>
            ' <param name="interfaceClientReference">Name used to 
            ' reference the interface on the client. 
            ' This is a server side example so the value is set to 
            ' empty string.</param>
            ' <param name="menuLabel">Label for the interface that 
            ' appears in the UI</param>
            ' <param name="description">Description of the interface 
            ' that appears in the UI</param>
            ' <param name="allowCrossPageConnection">Specifies if the 
            ' interface can connect to a Web Part
            ' on a different page. This is an optional parameter with a 
            ' default of false. Note that only some 
            ' server-side interfaces are allowed to connect across 
            ' pages by the Web Part infrastructure. 
            ' The IParametersInConsumer interface is allowed to connect 
            ' across pages.</param>
            RegisterInterface("MyParametersInConsumerInterface", InterfaceTypes.IParametersInConsumer, WebPart.LimitOneConnection, ConnectionRunAt.Server, Me, "", "Consume Font Parameters From", "Consumes font parameters from another Web Part.", True)    
         Catch se As SecurityException
            _registrationErrorOccurred = True
         End Try
      End Sub
      
      
      ' Step #5: Override the CanRunAt method.
      ' The CanRunAt method is called by the Web Part infrastructure 
      ' during the ASP.NET PreRender event
      ' to determine where the Web Part can run based on its current 
      ' configuration.
      Public Overrides Function CanRunAt() As ConnectionRunAt
         ' This Web Part can run on the server.
         Return ConnectionRunAt.Server
      End Function
      
      
      ' Step #6: Override the PartCommunicationConnect method.
      ' The PartCommunicationConnect method is called by the Web Part 
      ' infrastructure to notify the Web Part that it
      ' is connected during the ASP.NET PreRender event. Relevant 
      ' information is passed to the part such as 
      ' the interface it is connected over, the Web Part it is being 
      ' connected to, and where the part will be running, 
      ' either client or server side. 
      ' <param name="interfaceName">Friendly name of the interface that 
      ' is being connected</param>
      ' <param name="connectedPart">Reference to the other Web Part 
      ' that is being connected to</param>
      ' <param name="connectedInterfaceName">Friendly name of the 
      ' interface on the other Web Part</param>
      ' <param name="runAt">Where the interface should execute</param>
      Public Overrides Sub PartCommunicationConnect(interfaceName As String, connectedPart As WebPart, connectedInterfaceName As String, runAt As ConnectionRunAt)
         ' Keep track of the connection state.
         If interfaceName = "MyParametersInConsumerInterface" Then
            _connected = True
            _connectedWebPartTitle = SPEncode.HtmlEncode(connectedPart.Title)
         End If
      End Sub
  
      ' Step #7: Override the PartCommunicationInit method.
      ' The PartCommunicationInit method is called by the Web Part 
      ' infrastructure during the ASP.NET PreRender 
      ' phase to allow the part to pass initialization information 
      ' to the  other connected parts.
      ' It is important to always pass initialization information. Some 
      ' parts may not behave properly if this initialization 
      ' information is not received.
      Public Overrides Sub PartCommunicationInit()
            ' Ensure all controls have been created.
            EnsureChildControls()

            ' Check if connected.
            If _connected Then
                ' Need to create the args for the 
                ' ParametersInConsumerInit event
                Dim parametersInConsumerInitEventArgs As New ParametersInConsumerInitEventArgs()

                'Set the ParameterInProperties
                parametersInConsumerInitEventArgs.ParameterInProperties = New ParameterInProperty(3) {}

                parametersInConsumerInitEventArgs.ParameterInProperties(0) = New ParameterInProperty()
                parametersInConsumerInitEventArgs.ParameterInProperties(0).Description = _fontFamilyParamDescription
                parametersInConsumerInitEventArgs.ParameterInProperties(0).ParameterDisplayName = _fontFamilyParamDisplayName
                parametersInConsumerInitEventArgs.ParameterInProperties(0).ParameterName = _fontFamilyParamName
                parametersInConsumerInitEventArgs.ParameterInProperties(0).Required = True

                parametersInConsumerInitEventArgs.ParameterInProperties(1) = New ParameterInProperty()
                parametersInConsumerInitEventArgs.ParameterInProperties(1).Description = _fontColorParamDescription
                parametersInConsumerInitEventArgs.ParameterInProperties(1).ParameterDisplayName = _fontColorParamDisplayName
                parametersInConsumerInitEventArgs.ParameterInProperties(1).ParameterName = _fontColorParamName
                parametersInConsumerInitEventArgs.ParameterInProperties(1).Required = False

                parametersInConsumerInitEventArgs.ParameterInProperties(2) = New ParameterInProperty()
                parametersInConsumerInitEventArgs.ParameterInProperties(2).Description = _fontWeightParamDescription
                parametersInConsumerInitEventArgs.ParameterInProperties(2).ParameterDisplayName = _fontWeightParamDisplayName
                parametersInConsumerInitEventArgs.ParameterInProperties(2).ParameterName = _fontWeightParamName
                parametersInConsumerInitEventArgs.ParameterInProperties(2).Required = True

                parametersInConsumerInitEventArgs.ParameterInProperties(3) = New ParameterInProperty()
                parametersInConsumerInitEventArgs.ParameterInProperties(3).Description = _fontSizeParamDescription
                parametersInConsumerInitEventArgs.ParameterInProperties(3).ParameterDisplayName = _fontSizeParamDisplayName
                parametersInConsumerInitEventArgs.ParameterInProperties(3).ParameterName = _fontSizeParamName
                parametersInConsumerInitEventArgs.ParameterInProperties(3).Required = False

                ' Fire the ParametersInConsumerInit event.
                RaiseEvent ParametersInConsumerInit(Me, parametersInConsumerInitEventArgs)
            End If
        End Sub
      
      
      ' Step #8: Implement the ParametersInReady event handler.
      ' The connected provider part may call this method during its 
      ' PartCommunicationMain phase
      ' to pass its primary data to the consumer Web Part.
      ' <param name="sender">Provider Web Part</param>
      ' <param name="parametersInReadyEventArgs">The args passed by the 
      ' Provider</param>
      Public Sub ParametersInReady(sender As Object, parametersInReadyEventArgs As ParametersInReadyEventArgs) _
            Implements IParametersInConsumer.ParametersInReady
         _parametersInReadyFlag = True
         
         ' Set the text box values to the values of the parameters.
         If Not (parametersInReadyEventArgs.ParameterValues Is Nothing) Then
            _fontFamily = parametersInReadyEventArgs.ParameterValues(0)
            _fontColor = parametersInReadyEventArgs.ParameterValues(1)
            _fontWeight = parametersInReadyEventArgs.ParameterValues(2)
            _fontSize = parametersInReadyEventArgs.ParameterValues(3)
            
            ' Store font attributes in a State Bag for use by the 
            ' NoParametersIn event handler.
            ViewState("FontFamily") = _fontFamily
            ViewState("FontColor") = _fontColor
            ViewState("FontWeight") = _fontWeight
            ViewState("FontSize") = _fontSize
         End If
      End Sub
      
      ' Step #9: Implement the NoParametersIn event handler.
      ' The connected provider part may call this method during its 
      ' PartCommunicationMain phase to indicate there is no change in 
      ' the parameter values. This allows the consumer part to 
      ' display its cached data instead of potentially hitting a 
      ' database again or recalculating values. 
      ' <param name="sender">Provider Web Part</param>
      ' <param name="eventArgs">The Event Argumentsr</param>
      Public Sub NoParametersIn(sender As Object, eventArgs As EventArgs) _
            Implements IParametersInConsumer.NoParametersIn
         _noParametersInFlag = True
         
         'Set font attributes based on cached values
         _fontFamily = CStr(ViewState("FontFamily"))
         _fontColor = CStr(ViewState("FontColor"))
         _fontWeight = CStr(ViewState("FontWeight"))
         _fontSize = CStr(ViewState("FontSize"))
      End Sub
        
      Protected Overrides Sub RenderWebPart(output As HtmlTextWriter)
         ' Check for connection interface registration error.
         If _registrationErrorOccurred Then
            output.Write(_registrationErrorMsg)
            Return
         End If
         
         ' Set text style attributes.
         output.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, _fontFamily)
         output.AddStyleAttribute(HtmlTextWriterStyle.Color, _fontColor)
         output.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, _fontWeight)
         output.AddStyleAttribute(HtmlTextWriterStyle.FontSize, _fontSize)
         
         ' Formatted Web Part description.
         output.RenderBeginTag(HtmlTextWriterTag.Div)
         output.Write("<br>")
         output.Write(_webPartDescription)
         output.RenderEndTag()
         
         ' Line break.
         output.RenderBeginTag(HtmlTextWriterTag.Br)
         output.RenderEndTag()
         
         ' Check if connected.
         If _connected Then
            If Not (_fontFamily Is Nothing) Then
               ' Indicate where parameters were retrieved from.
               If _parametersInReadyFlag Then
                  output.Write("Parameters were retrieved from provider part.")
               ElseIf _noParametersInFlag Then
                  output.Write("Parameters were retrieved from <font color=blue>cache</font>.")
               End If
            End If 
            ' Line break.
            output.RenderBeginTag(HtmlTextWriterTag.Br)
            output.RenderEndTag()
            
            ' Render connected Web Part title.
            output.Write((_connectedWebPartLabel + ": "))
            output.RenderBeginTag(HtmlTextWriterTag.I)
            output.Write(_connectedWebPartTitle)
            output.RenderEndTag()
            output.Write("<br>")
         
         Else
            ' The Web Part isn't connected.
            output.Write(_notConnectedMsg)
         End If
      End Sub 'RenderWebPart 
   End Class 'ServerSideParametersInConsumer
End Namespace 'ConnectionCodeSamples
// Common .NET required namespaces.
using System;
using System.ComponentModel;
using System.Web.UI;

// Web Part required namespaces.
using Microsoft.SharePoint.WebPartPages;
using System.Xml.Serialization;
using System.Web.UI.WebControls;

// Code Access Security namespaces.
using System.Security;
using Microsoft.SharePoint.Utilities;

// Step #1: Reference the Communication namespace.
using Microsoft.SharePoint.WebPartPages.Communication;

namespace ConnectionCodeSamples
{
    // Step #2: Inherit from the WebPart base class and implement the 
    // IParametersInConsumer interface.
    public class ServerSideParametersInConsumer : WebPart, IParametersInConsumer
    {    
        // Step #3: Declare the IParametersInConsumer events.
        // Because this class implements the IParametersInConsumer 
        // interface, it must 
        // declare the interface member ParametersInConsumerInit.

        public event ParametersInConsumerInitEventHandler ParametersInConsumerInit;        

        // Declare variables for keeping track of connection state.
        private bool _connected = false;
        private string _connectedWebPartTitle = string.Empty;
        private string _registrationErrorMsg = "An error has occurred trying to register your connection interfaces.";
        private bool _registrationErrorOccurred = false;
        private string _notConnectedMsg = "NOT CONNECTED. To set the text style of this Web Part connect it to an appropriate 

ParametersOut or ParametersIn Provider Web Part.";
        private string _missingInput = "is a required parameter input.";

        // Declare variables for Web Part user interface.
        private string _connectedWebPartLabel = "Connected to Web Part";
        private string _webPartDescription;
        string _fontFamily = string.Empty;    
        string _fontColor = string.Empty;        
        string _fontWeight = string.Empty;    
        string _fontSize = string.Empty;        
        bool _parametersInReadyFlag = false;
        bool _noParametersInFlag = false;

        // Declare variables for parameter attributes.
        string _fontFamilyParamDescription = "Font Family";
        string _fontFamilyParamDisplayName = "Font Family";
        string _fontFamilyParamName = "FFamily";
        string _fontColorParamDescription = "Font Color";
        string _fontColorParamDisplayName = "Font Color";
        string _fontColorParamName = "FColor";
        string _fontWeightParamDescription = "Font Weight";
        string _fontWeightParamDisplayName = "Font Weight";
        string _fontWeightParamName = "FWeight";
        string _fontSizeParamDescription = "Font Size";
        string _fontSizeParamDisplayName = "Font Size";
        string _fontSizeParamName = "FSize";

        // Constructor
        public ServerSideParametersInConsumer()
        {
            // Set Web Part description.
            _webPartDescription = "This is an example of a IParametersInConsumer Web Part.  The following ";
            _webPartDescription += "text style attributes can be set when passed as parameters via a Web Part Connection: ";
            _webPartDescription += "font color, weight, size, and family. This Web Part can only be connected to ";
            _webPartDescription += "another part which implements the IParametersOutProvider or IParametersInProvider interface. ";
            _webPartDescription += "A Windows SharePoint Services-compatible HTML editor is required to connect this Web Part to IParametersOutProvider.";
        }

        // Step #4: Override the EnsureInterfaces method and call 
        // RegisterInterface method.
        // The EnsureInterfaces method is called by the Web Part 
        // infrastructure during the ASP.NET PreRender event 
        // and allows the part to register all of its connection 
        // interfaces.

        public override void EnsureInterfaces()
        {
            // If your Web Part is installed in the bin directory and 
            // the Code Access Security (CAS) setting doesn't 
            // allow Web Part Connections, an exception will be thrown. 
            // To allow your Web Part to behave 
            // well and continue working, a try/catch block should be 
            // used when attempting to register interfaces.
            // Web Part Connections will only work if the level 
            // attribute of the <trust> tag in the 
            // web.config file is set to WSS_Minimal, WSS_Medium, or 
            // Full. By default a new SharePoint site
            // is installed with the trust level set to WSS_Minimal.
            try
            {
                // Register the IParametersInConsumer interface.
                // <param name="interfaceName">Friendly name of the 
                // interface that is being implemented.</param>
                // <param name="interfaceType">Specifies which 
                // interface is being implemented.</param>
                // <param name="maxConnections">Defines how many times 
                // this interface can be connected.</param>
                // <param name="runAtOptions">Determines where the 
                // interface can run.</param>
                // <param name="interfaceObject">Reference to the 
                // object that is implementing this interface.</param>
                // <param name="interfaceClientReference">Name used to 
                // reference the interface on the client. 
                // This is a server side example so the value is set to 
                // empty string.</param>
                // <param name="menuLabel">Label for the interface 
                // which appears in the UI</param>
                // <param name="description">Description of the 
                // interface which appears in the UI</param>
                // <param name="allowCrossPageConnection">Specifies if 
                // the interface can connect to a Web Part
                // on a different page. This is an optional parameter 
                // with a default of false. Note that only some 
                // server side interfaces are allowed to connect across 
                // pages by the Web Part infrastructure. 
                // The IParametersInConsumer interface is allowed to 
                // connect across pages.</param>
                RegisterInterface("MyParametersInConsumerInterface",        //InterfaceName    
                    InterfaceTypes.IParametersInConsumer,                   //InterfaceType
                    WebPart.LimitOneConnection,                             //MaxConnections
                    ConnectionRunAt.Server,                                 //RunAtOptions
                    this,                                                   //InterfaceObject
                    "",                                                     //InterfaceClientReference
                    "Consume Font Parameters From",                         //MenuLabel
                    "Consumes font parameters from another Web Part.",      //Description
                    true);                                                  //allowCrossPageConnection
            }
            catch(SecurityException se)
            {
                _registrationErrorOccurred = true;
            }
        }

        // Step #5: Override the CanRunAt method.
        // The CanRunAt method is called by the Web Part infrastructure 
        // during the ASP.NET PreRender event
        // to determine where the Web Part can run based on its current 
        // configuration.
        public override ConnectionRunAt CanRunAt()
        {
            // This Web Part can run on the server.
            return ConnectionRunAt.Server;
        }

        // Step #6: Override the PartCommunicationConnect method.
        // The PartCommunicationConnect method is called by the Web 
        // Part infrastructure to notify the Web Part that it
        // is connected during the ASP.NET PreRender event. Relevant 
        // information is passed to the part such as 
        // the interface it is connected over, the Web Part it is being 
        // connected to, and where the part will be running, 
        // either client or server side. 
        // <param name="interfaceName">Friendly name of the interface 
        // that is being connected</param>
        // <param name="connectedPart">Reference to the other Web Part 
        // that is being connected to</param>
        // <param name="connectedInterfaceName">Friendly name of the 
        // interface on the other Web Part</param>
        // <param name="runAt">Where the interface should 
        // execute</param>
        public override void PartCommunicationConnect(string interfaceName,
            WebPart connectedPart,
            string connectedInterfaceName,
            ConnectionRunAt runAt)
        {
            // Keep track of the connection state.
            if (interfaceName == "MyParametersInConsumerInterface")
            {
                _connected = true;
                _connectedWebPartTitle = SPEncode.HtmlEncode(connectedPart.Title);
            }
        }

        // Step #7: Override the PartCommunicationInit method.
        // The PartCommunicationInit method is called by the Web Part 
        // infrastructure during the ASP.NET PreRender 
        // phase to allow the part to pass initialization information 
        // to the other connected parts.
        // It is important to always pass initialization information. 
        // Some parts may not behave properly if this initialization 
        // information is not received.
        public override void PartCommunicationInit()
        {
            // Ensure all controls have been created.
            EnsureChildControls();

            // Check if connected.
            if(_connected)
            {
                // If there is a listener, fire the 
                // ParametersInConsumerInit event.
                if (ParametersInConsumerInit != null)
                {
                    // Need to create the args for the 
                    // ParametersInConsumerInit event
                    ParametersInConsumerInitEventArgs parametersInConsumerInitEventArgs = new ParametersInConsumerInitEventArgs();
                    
                    //Set the ParameterInProperties
                    parametersInConsumerInitEventArgs.ParameterInProperties = new ParameterInProperty[4];

                    parametersInConsumerInitEventArgs.ParameterInProperties[0] = new ParameterInProperty();
                    parametersInConsumerInitEventArgs.ParameterInProperties[0].Description = _fontFamilyParamDescription;
                    parametersInConsumerInitEventArgs.ParameterInProperties[0].ParameterDisplayName = _fontFamilyParamDisplayName;
                    parametersInConsumerInitEventArgs.ParameterInProperties[0].ParameterName = _fontFamilyParamName;
                    parametersInConsumerInitEventArgs.ParameterInProperties[0].Required = true;

                    parametersInConsumerInitEventArgs.ParameterInProperties[1] = new ParameterInProperty();
                    parametersInConsumerInitEventArgs.ParameterInProperties[1].Description = _fontColorParamDescription;
                    parametersInConsumerInitEventArgs.ParameterInProperties[1].ParameterDisplayName = _fontColorParamDisplayName;
                    parametersInConsumerInitEventArgs.ParameterInProperties[1].ParameterName = _fontColorParamName;
                    parametersInConsumerInitEventArgs.ParameterInProperties[1].Required = false;

                    parametersInConsumerInitEventArgs.ParameterInProperties[2] = new ParameterInProperty();
                    parametersInConsumerInitEventArgs.ParameterInProperties[2].Description = _fontWeightParamDescription;
                    parametersInConsumerInitEventArgs.ParameterInProperties[2].ParameterDisplayName = _fontWeightParamDisplayName;
                    parametersInConsumerInitEventArgs.ParameterInProperties[2].ParameterName = _fontWeightParamName;
                    parametersInConsumerInitEventArgs.ParameterInProperties[2].Required = true;

                    parametersInConsumerInitEventArgs.ParameterInProperties[3] = new ParameterInProperty();
                    parametersInConsumerInitEventArgs.ParameterInProperties[3].Description = _fontSizeParamDescription;
                    parametersInConsumerInitEventArgs.ParameterInProperties[3].ParameterDisplayName = _fontSizeParamDisplayName;
                    parametersInConsumerInitEventArgs.ParameterInProperties[3].ParameterName = _fontSizeParamName;
                    parametersInConsumerInitEventArgs.ParameterInProperties[3].Required = false;

                    // Fire the ParametersInConsumerInit event.
                    ParametersInConsumerInit(this, parametersInConsumerInitEventArgs);
                }
            }
        }

        // Step #8: Implement the ParametersInReady event handler.
        // The connected provider part may call this method during its 
        // PartCommunicationMain phase
        // to pass its primary data to the consumer Web Part.
        // <param name="sender">Provider Web Part</param>
        // <param name="parametersInReadyEventArgs">The args passed by 
        // the Provider</param>
        public void ParametersInReady(object sender, ParametersInReadyEventArgs parametersInReadyEventArgs)
        {
            _parametersInReadyFlag = true;

            // Set the text box values to the values of the parameters.
            if(parametersInReadyEventArgs.ParameterValues != null)
            {
                _fontFamily = parametersInReadyEventArgs.ParameterValues[0];
                _fontColor = parametersInReadyEventArgs.ParameterValues[1];
                _fontWeight = parametersInReadyEventArgs.ParameterValues[2];
                _fontSize = parametersInReadyEventArgs.ParameterValues[3];

                // Store font attributes in a State Bag for use by the 
                //NoParametersIn event handler.
                ViewState["FontFamily"] = _fontFamily;
                ViewState["FontColor"] = _fontColor;
                ViewState["FontWeight"] = _fontWeight;
                ViewState["FontSize"] = _fontSize;
            }
        }

        // Step #9: Implement the NoParametersIn event handler.
        // The connected provider part may call this method during its 
        // PartCommunicationMain phase
        // to indicate there is no change in the parameter values. This 
        // allows the consumer part to 
        // display its cached data instead of potentially hitting a 
        // database again or recalculating values. 
        // <param name="sender">Provider Web Part</param>
        // <param name="eventArgs">The Event Argumentsr</param>
        public void NoParametersIn(object sender, EventArgs eventArgs)
        {
            _noParametersInFlag = true;

            //Set font attributes based on cached values
            _fontFamily = (string)ViewState["FontFamily"];
            _fontColor = (string)ViewState["FontColor"];
            _fontWeight = (string)ViewState["FontWeight"];
            _fontSize = (string)ViewState["FontSize"];
        }

        protected override void RenderWebPart(HtmlTextWriter output)
        {
            // Check for connection interface registration error.
            if (_registrationErrorOccurred)
            {
                output.Write(_registrationErrorMsg);
                return;
            }

            // Set text style attributes.
            output.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, _fontFamily);
            output.AddStyleAttribute(HtmlTextWriterStyle.Color, _fontColor);
            output.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, _fontWeight);
            output.AddStyleAttribute(HtmlTextWriterStyle.FontSize, _fontSize);

            // Formatted Web Part description.
            output.RenderBeginTag(HtmlTextWriterTag.Div);
            output.Write("<br>");
            output.Write(_webPartDescription);
            output.RenderEndTag();

            // Line break.
            output.RenderBeginTag(HtmlTextWriterTag.Br);
            output.RenderEndTag();

            // Check if connected.
            if(_connected)
            {
                if (_fontFamily != null)
                {
                    // Indicate where parameters were retrieved from.
                    if (_parametersInReadyFlag)
                        output.Write("Parameters were retrieved from provider part.");
                    else if (_noParametersInFlag)
                        output.Write("Parameters were retrieved from <font color=blue>cache</font>.");
                }

                // Line break.
                output.RenderBeginTag(HtmlTextWriterTag.Br);
                output.RenderEndTag();

                // Render connected Web Part title.
                output.Write(_connectedWebPartLabel + ": ");
                output.RenderBeginTag(HtmlTextWriterTag.I);
                output.Write(_connectedWebPartTitle);
                output.RenderEndTag();
                output.Write("<br>");

            }
            else
            {
                // The Web Part isn't connected.
                output.Write(_notConnectedMsg);
            }

        }
    }
}

Ver também

Referência

IParametersInConsumer members

Microsoft.SharePoint.WebPartPages.Communication namespace