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);
}
}
}
}