Поделиться через


Интерфейс IParametersOutProvider

Примечание. Этот API устарел.

Позволяет поставщику веб-части для связи свой список параметров для других веб-части.

Пространство имен:  Microsoft.SharePoint.WebPartPages.Communication
Сборка:  Microsoft.SharePoint (в Microsoft.SharePoint.dll)

Синтаксис

'Декларация
<ObsoleteAttribute("Use System.Web.UI.WebControls.WebParts.IWebPartParameters instead")> _
Public Interface IParametersOutProvider
'Применение
Dim instance As IParametersOutProvider
[ObsoleteAttribute("Use System.Web.UI.WebControls.WebParts.IWebPartParameters instead")]
public interface IParametersOutProvider

Замечания

Интерфейс IParametersOutProvider можно использовать с частями, которые должны быть пройдены общая коллекция параметров. Его можно использовать в сценариях, где был разработан веб-части потребителя сведения о данных, отправляемых поставщиком. Кроме того часть IParametersOutProvider имеет возможность передавать аргументы инициализации части потребителя. Поскольку IParametersOutProvider могут подключаться к IParametersOutConsumer и IParametersInConsumer интерфейсов, как поставщик параметров является хорошим выбором. Кроме того серверные реализации IParametersOutProvider подключаются к части на другую страницу с помощью редактора HTML, совместимого с Microsoft SharePoint Foundation, например Microsoft SharePoint Designer.

При подключении к IParametersOutConsumerIParametersOutProvider , подключение прямой, поэтому отображается диалоговое окно не трансформатор. При подключении к IParametersInConsumerIParametersOutProvider , появляться диалоговое окно преобразователя, который позволяет конечному пользователю для сопоставления значений параметров между частями. В этом случае занимает часть не разработаны с пониманием поставщика, так как пользователь выполняет сопоставление. Тем не менее это необходимо для более глубокого понимания работы веб-части подключения пользователя. Веб-части, реализующие интерфейс IParametersOutProvider может подключаться только к IParametersInConsumer веб-части с помощью редактора HTML, совместимого с SharePoint Foundation, например SharePoint Designer.

Интерфейсы IParametersOutProvider и IParametersOutConsumer позволяют передать дополнительную информацию, например выбранной строки. Например когда пользователь щелкает строку в списке, данные строки, а также параметры могут передаваться через эти интерфейсы.

Примеры

В следующем примере кода показан простой серверных IParametersOutProvider веб-части. Он может быть подключен к один или несколько веб-части, которые реализуют интерфейс IParametersOutConsumer или IParametersInConsumer на сервере. В этом примере отображается набор полей раскрывающегося списка атрибутов шрифта, такие как размер, цвет, толщину и семейства. При сохранении значений атрибутов этой веб-части передает параметры всех веб-части, подключенные к нему.

9 действия относятся к тому, что данная соединяемой веб-части. Эти шаги будут пронумерованы и комментария в следующем примере кода.

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

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

' Required for ArrayLists
Imports System.Collections

' 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 
   ' IParametersOutProvider interface.
   
   Public Class ServerSideParametersOutProvider
      Inherits WebPart
      Implements IParametersOutProvider
      
      ' Step #3: Declare the IParametersOutProvider events.
      ' Because this class implements the IParametersOutProvider 
      ' interface, it must  declare the interface members 
      ' ParametersOutProviderInit, ParametersOutReady, and 
      ' NoParametersOut. 
      Public Event ParametersOutProviderInit As ParametersOutProviderInitEventHandler Implements IParametersOutProvider.ParametersOutProviderInit
      Public Event ParametersOutReady As ParametersOutReadyEventHandler Implements IParametersOutProvider.ParametersOutReady
      Public Event NoParametersOut As NoParametersOutEventHandler Implements IParametersOutProvider.NoParametersOut
      
      ' 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 use this Web Part connect it to a ParametersOut or ParametersIn Consumer Web Part."
      
      ' Declare variables for Web Part user interface.
      Private _connectedWebPartLabel As String = "Connected to Web Part"
      Private _fontFamilyListBox As DropDownList
      Private _fontColorListBox As DropDownList
      Private _fontWeightListBox As DropDownList
      Private _fontSizeListBox As DropDownList
      Private _fontFamilyArrayList As ArrayList
      Private _fontColorArrayList As ArrayList
      Private _fontWeightArrayList As ArrayList
      Private _fontSizeArrayList As ArrayList
      Private _parametersReadyButton As Button
      Private _parametersReadyButtonClicked As Boolean = False
      Private _noParametersOutButton As Button
      Private _noParametersOutButtonClicked As Boolean = False
      
      ' Declare variables for Parameter attributes.
      Private _fontFamilyParamDescription As String = "Font Family"
      Private _fontFamilyParamDisplayName As String = "Font"
      Private _fontFamilyParamName As String = "FontFamily"
      Private _fontColorParamDescription As String = "Font Color"
      Private _fontColorParamDisplayName As String = "Color"
      Private _fontColorParamName As String = "FontColor"
      Private _fontWeightParamDescription As String = "Font Weight"
      Private _fontWeightParamDisplayName As String = "Weight"
      Private _fontWeightParamName As String = "FontWeight"
      Private _fontSizeParamDescription As String = "Font Size"
      Private _fontSizeParamDisplayName As String = "Size"
      Private _fontSizeParamName As String = "FontSize"
      
      
      ' Constructor
      Public Sub New()
         ' Create Array List objects.
         _fontFamilyArrayList = New ArrayList()
         _fontColorArrayList = New ArrayList()
         _fontWeightArrayList = New ArrayList()
         _fontSizeArrayList = New ArrayList()
         
         ' Add items to _fontFamilyArrayList.
         _fontFamilyArrayList.Add("Times")
         _fontFamilyArrayList.Add("Arial")
         _fontFamilyArrayList.Add("Verdana")
         _fontFamilyArrayList.Add("Courier")
         
         ' Add items to _fontColorArrayList.
         _fontColorArrayList.Add("Black")
         _fontColorArrayList.Add("Red")
         _fontColorArrayList.Add("Green")
         _fontColorArrayList.Add("Yellow")
         _fontColorArrayList.Add("Blue")
         
         ' Add items to _fontWeightArrayList.
         _fontWeightArrayList.Add("Normal")
         _fontWeightArrayList.Add("Bold")
         
         ' Add items to _fontSizeArrayList.
         _fontSizeArrayList.Add("10pt")
         _fontSizeArrayList.Add("12pt")
         _fontSizeArrayList.Add("14pt")
         _fontSizeArrayList.Add("20pt")
      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 IParametersOutProvider 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 IParametersOutProvider interface is allowed to 
            ' connect across pages.</param>
            RegisterInterface("MyParametersOutProviderInterface", InterfaceTypes.IParametersOutProvider, WebPart.UnlimitedConnections, ConnectionRunAt.Server, Me, "", "Provide Parameters To", "Provides a font parameters to a consumer 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 connection state.
         If interfaceName = "MyParametersOutProviderInterface" 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 that all of the Web Part's controls are created.
            EnsureChildControls()

            ' Check if connected.
            If _connected Then
                ' Need to create the ParametersOutProviderInitEventArgs 
                ' object for the ParametersOutProviderInit event.
                Dim parametersOutProviderInitInitEventArgs As New ParametersOutProviderInitEventArgs()

                ' Set the ParameterOutProperties.
                parametersOutProviderInitInitEventArgs.ParameterOutProperties = New ParameterOutProperty(3) {}

                ' There are 4 parameters types that will be passed: 
                ' Font Family, Color, Weight, and Size.
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(0) = New ParameterOutProperty()
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(0).Description = _fontFamilyParamDescription
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(0).ParameterDisplayName = _fontFamilyParamDisplayName
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(0).ParameterName = _fontFamilyParamName

                parametersOutProviderInitInitEventArgs.ParameterOutProperties(1) = New ParameterOutProperty()
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(1).Description = _fontColorParamDescription
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(1).ParameterDisplayName = _fontColorParamDisplayName
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(1).ParameterName = _fontColorParamName

                parametersOutProviderInitInitEventArgs.ParameterOutProperties(2) = New ParameterOutProperty()
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(2).Description = _fontWeightParamDescription
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(2).ParameterDisplayName = _fontWeightParamDisplayName
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(2).ParameterName = _fontWeightParamName

                parametersOutProviderInitInitEventArgs.ParameterOutProperties(3) = New ParameterOutProperty()
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(3).Description = _fontSizeParamDescription
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(3).ParameterDisplayName = _fontSizeParamDisplayName
                parametersOutProviderInitInitEventArgs.ParameterOutProperties(3).ParameterName = _fontSizeParamName

                ' Fire the ParametersOutProviderInit event.
                RaiseEvent ParametersOutProviderInit(Me, parametersOutProviderInitInitEventArgs)
            End If
        End Sub
      
      
      ' Step #8: Override the PartCommunicationMain() method.
      ' The PartCommunicationMain method is called by the Web Part 
      ' infrastructure on the client during the ASP.NET PreRender
      ' event to allow the part to pass its primary data to the other 
      ' connected parts.
      ' It is important to always fire either the ParametersOutReady or 
      ' the NoParametersOut event. Some parts
      ' may not behave properly if they are left waiting for this 
      ' information. ParametersOutReady should be fired to send the 
      ' parameters. NoParametersOut should be fired to indicate that 
      ' there is no change in the parameters.
       Public Overrides Sub PartCommunicationMain()
            ' Ensure that all of the Web Part's controls are created.
            EnsureChildControls()

            ' Check if connected.
            If _connected Then
                ' Need to create the ParametersOutReadyEventArgs object for the ParametersOutReady event.
                Dim parametersOutReadyEventArgs As New ParametersOutReadyEventArgs()

                If _parametersReadyButtonClicked Then 'ParametersOutReady Button was clicked
                    ' Set the values to the values of the text boxes.
                    parametersOutReadyEventArgs.ParameterValues = New String(3) {}
                    parametersOutReadyEventArgs.ParameterValues(0) = _fontFamilyListBox.SelectedItem.Value
                    parametersOutReadyEventArgs.ParameterValues(1) = _fontColorListBox.SelectedItem.Value
                    parametersOutReadyEventArgs.ParameterValues(2) = _fontWeightListBox.SelectedItem.Value
                    parametersOutReadyEventArgs.ParameterValues(3) = _fontSizeListBox.SelectedItem.Value

                    ' Fire the ParametersOutReady event.
                    RaiseEvent ParametersOutReady(Me, parametersOutReadyEventArgs)
                    _parametersReadyButtonClicked = False
                    'The NoParametersOut button was clicked.
                ElseIf _noParametersOutButtonClicked Then
                    ' Fire the event.
                    RaiseEvent NoParametersOut(Me, New EventArgs())
                    _noParametersOutButtonClicked = False
                    ' The user didn't click any button.
                Else
                    ' Fire the event.
                    RaiseEvent NoParametersOut(Me, New EventArgs())
                    _noParametersOutButtonClicked = False
                End If
            End If
        End Sub      
      
      ' Step #9: Override the GetInitEventArgs method.
      ' GetInitEventArgs() is called by the Web Part infrastructure 
      ' during the ASP.NET PreRender event to gather the 
      ' necessary information it needs to build the transformer dialog. 
      ' The transformer dialog is needed when connecting different 
      ' interfaces such as IRowProvider to ICellConsumer. The 
      ' transformer dialog allows the user to map the fields between 
      ' the interfaces. The GetInitEventArgs()method only needs to be 
      ' implemented for interfaces that can participate in a 
      ' transformer which are the following:
      ' ICellConsumer, IRowProvider, IFilterConsumer, 
      ' IParametersOutProvider, IParametersInConsumer.
      ' <param name="interfacename">Name of interface on which the Web 
      ' Part infrastructure is requesting information</param>
      ' <returns>An InitEventArgs object</returns>
      Public Overrides Function GetInitEventArgs(interfaceName As String) As InitEventArgs
         ' Check if this is my particular ParametersOut interface.
         If interfaceName = "MyParametersOutProviderInterface" Then
            ' Ensure that child controls have been created
            EnsureChildControls()
            
            ' Need to create the ParametersOutProviderInitEventArgs 
            ' object for the ParametersOutProviderInit event.
            Dim parametersOutProviderInitInitEventArgs As New ParametersOutProviderInitEventArgs()
            
            ' Set the ParameterOutProperties.
            parametersOutProviderInitInitEventArgs.ParameterOutProperties = New ParameterOutProperty(3) {}
            
            'There are 4 parameters types that will be passed: Font Family, Color, Weight, and Size
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(0) = New ParameterOutProperty()
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(0).Description = _fontFamilyParamDescription
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(0).ParameterDisplayName = _fontFamilyParamDisplayName
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(0).ParameterName = _fontFamilyParamName
            
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(1) = New ParameterOutProperty()
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(1).Description = _fontColorParamDescription
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(1).ParameterDisplayName = _fontColorParamDisplayName
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(1).ParameterName = _fontColorParamName
            
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(2) = New ParameterOutProperty()
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(2).Description = _fontWeightParamDescription
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(2).ParameterDisplayName = _fontWeightParamDisplayName
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(2).ParameterName = _fontWeightParamName
            
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(3) = New ParameterOutProperty()
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(3).Description = _fontSizeParamDescription
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(3).ParameterDisplayName = _fontSizeParamDisplayName
            parametersOutProviderInitInitEventArgs.ParameterOutProperties(3).ParameterName = _fontSizeParamName
            
            ' Return the parametersOutProviderInitInitEventArgs object.
            Return parametersOutProviderInitInitEventArgs
         Else
            Return Nothing
         End If
      End Function
      
      
      Protected Overrides Sub RenderWebPart(output As HtmlTextWriter)
         ' Check for connection interface registration error.
         If _registrationErrorOccurred Then
            output.Write(_registrationErrorMsg)
            Return
         End If
         
         ' Ensure that all of the Web Part's controls are created.
         EnsureChildControls()
         
         ' Check if connected.
         If _connected Then
            ' Render List Box table.
            output.RenderBeginTag(HtmlTextWriterTag.Table) 'Begin Table
            ' Font Family Row.
            output.RenderBeginTag(HtmlTextWriterTag.Tr) 'Begin TR
            output.RenderBeginTag(HtmlTextWriterTag.Td) 'Begin TD
            output.RenderBeginTag(HtmlTextWriterTag.B) 'Begin B
            output.Write((_fontFamilyParamDisplayName + ": ")) 'Render List Box Label
            output.RenderEndTag() 'End </B>
            output.RenderEndTag() 'End </TD>
            output.RenderBeginTag(HtmlTextWriterTag.Td) 'Begin TD
            _fontFamilyListBox.RenderControl(output) 'Render list box
            output.RenderEndTag() 'End </TD>
            output.RenderEndTag() 'End </TR>
            ' Font Color Row.
            output.RenderBeginTag(HtmlTextWriterTag.Tr) 'Begin TR
            output.RenderBeginTag(HtmlTextWriterTag.Td) 'Begin TD
            output.RenderBeginTag(HtmlTextWriterTag.B) 'Begin B
            output.Write((_fontColorParamDisplayName + ": ")) 'Render List Box Label
            output.RenderEndTag() 'End </B>
            output.RenderEndTag() 'End </TD>
            output.RenderBeginTag(HtmlTextWriterTag.Td) 'Begin TD
            _fontColorListBox.RenderControl(output) 'Render list box
            output.RenderEndTag() 'End </TD>
            output.RenderEndTag() 'End </TR>
            ' Font Weight Row.
            output.RenderBeginTag(HtmlTextWriterTag.Tr) 'Begin TR
            output.RenderBeginTag(HtmlTextWriterTag.Td) 'Begin TD
            output.RenderBeginTag(HtmlTextWriterTag.B) 'Begin B
            output.Write((_fontWeightParamDisplayName + ": ")) 'Render List Box Label
            output.RenderEndTag() 'End </B>
            output.RenderEndTag() 'End </TD>
            output.RenderBeginTag(HtmlTextWriterTag.Td) 'Begin TD
            _fontWeightListBox.RenderControl(output) 'Render list box
            output.RenderEndTag() 'End </TD>
            output.RenderEndTag() 'End </TR>
            ' Font Size Row.
            output.RenderBeginTag(HtmlTextWriterTag.Tr) 'Begin TR
            output.RenderBeginTag(HtmlTextWriterTag.Td) 'Begin TD
            output.RenderBeginTag(HtmlTextWriterTag.B) 'Begin B
            output.Write((_fontSizeParamDisplayName + ": ")) 'Render List Box Label
            output.RenderEndTag() 'End </B>
            output.RenderEndTag() 'End </TD>
            output.RenderBeginTag(HtmlTextWriterTag.Td) 'Begin TD
            _fontSizeListBox.RenderControl(output) 'Render list box
            output.RenderEndTag() 'End </TD>
            output.RenderEndTag() 'End </TR>
            output.RenderEndTag() 'End <Table>
            
            ' Render buttons.
            _parametersReadyButton.RenderControl(output)
            _noParametersOutButton.RenderControl(output)
            
            ' 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()
         
         Else
            ' The Web Part isn't connected.
            output.Write(_notConnectedMsg)
         End If
      End Sub
       
      
      ' Create Web Part user interface controls.
      Protected Overrides Sub CreateChildControls()
         ' Create List Boxes.
         _fontFamilyListBox = New DropDownList()
         _fontColorListBox = New DropDownList()
         _fontWeightListBox = New DropDownList()
         _fontSizeListBox = New DropDownList()
         
         ' Set List Box IDs.
         _fontFamilyListBox.ID = "FontFamilyListBox"
         _fontColorListBox.ID = "FontColorListBox"
         _fontWeightListBox.ID = "FontWeightListBox"
         _fontSizeListBox.ID = "FontSizeListBox"
         
         ' Set List Box Values.
         _fontFamilyListBox.DataSource = _fontFamilyArrayList
         _fontColorListBox.DataSource = _fontColorArrayList
         _fontWeightListBox.DataSource = _fontWeightArrayList
         _fontSizeListBox.DataSource = _fontSizeArrayList
         
         ' Databind the List Boxes.
         _fontFamilyListBox.DataBind()
         _fontColorListBox.DataBind()
         _fontWeightListBox.DataBind()
         _fontSizeListBox.DataBind()
         
         ' Add List Boxes to Controls Collection.
         Controls.Add(_fontFamilyListBox)
         Controls.Add(_fontColorListBox)
         Controls.Add(_fontWeightListBox)
         Controls.Add(_fontSizeListBox)
         
         ' Create the ParametersOutReady button.
         _parametersReadyButton = New Button()
         _parametersReadyButton.ID = "ParametersOutReadyButton"
         _parametersReadyButton.Text = "Fire ParametersOutReady"
         Controls.Add(_parametersReadyButton)
         
         ' Create the NoParametersOut button.
         _noParametersOutButton = New Button()
         _noParametersOutButton.ID = "NoParametersOutButton"
         _noParametersOutButton.Text = "Fire NoParametersOut"
         Controls.Add(_noParametersOutButton)
         
         
         ' Hook up button clicks.
         _parametersReadyButtonClicked = False ' Initialize to false -- user hasn't clicked yet
         AddHandler _parametersReadyButton.Click, AddressOf ParametersOutReadyButtonClicked ' listen for Button's click event
         _noParametersOutButtonClicked = False ' Initialize to false -- user hasn't clicked yet
         AddHandler _noParametersOutButton.Click, AddressOf NoParametersOutButtonClicked ' listen for Button's click event
      End Sub
      
      
      ' The ParametersOutReadyButton OnClick event handler.
      ' <param name="sender">The Button object</param>
      ' <param name="e">The Event Arguments</param>
      Private Sub ParametersOutReadyButtonClicked(sender As Object, e As EventArgs)
         _parametersReadyButtonClicked = True 'user clicked button, set to true
      End Sub
          
      
      ' The NoParametersOutButton OnClick event handler.
      ' <param name="sender">The Button object</param>
      ' <param name="e">The Event Arguments</param>
      Private Sub NoParametersOutButtonClicked(sender As Object, e As EventArgs)
         _noParametersOutButtonClicked = True 'user clicked button, set to true
      End Sub
   End Class
End Namespace
// Common .NET required namespaces
using System;
using System.ComponentModel;
using System.Web.UI;

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

// Required for ArrayLists
using System.Collections;

// 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 
    // IParametersOutProvider interface.
    public class ServerSideParametersOutProvider : WebPart, IParametersOutProvider
    {    
        
        // Step #3: Declare the IParametersOutProvider events.
        // Because this class implements the IParametersOutProvider 
        // interface, it must declare the interface members 
        // ParametersOutProviderInit, ParametersOutReady, and 
        // NoParametersOut. 
        
        public event ParametersOutProviderInitEventHandler ParametersOutProviderInit;
        public event ParametersOutReadyEventHandler ParametersOutReady;
        public event NoParametersOutEventHandler NoParametersOut;        

        // 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 use this Web Part connect it to a ParametersOut or ParametersIn Consumer Web Part.";

        // Declare variables for Web Part user interface.
        private string _connectedWebPartLabel = "Connected to Web Part";    
        DropDownList _fontFamilyListBox;
        DropDownList _fontColorListBox;
        DropDownList _fontWeightListBox;
        DropDownList _fontSizeListBox;
        ArrayList _fontFamilyArrayList;
        ArrayList _fontColorArrayList;
        ArrayList _fontWeightArrayList;
        ArrayList _fontSizeArrayList;
        private Button _parametersReadyButton;
        private bool _parametersReadyButtonClicked = false;
        private Button _noParametersOutButton;
        private bool _noParametersOutButtonClicked = false;

        // Declare variables for Parameter attributes.
        string _fontFamilyParamDescription = "Font Family";
        string _fontFamilyParamDisplayName = "Font";
        string _fontFamilyParamName = "FontFamily";
        string _fontColorParamDescription = "Font Color";
        string _fontColorParamDisplayName = "Color";
        string _fontColorParamName = "FontColor";
        string _fontWeightParamDescription = "Font Weight";
        string _fontWeightParamDisplayName = "Weight";
        string _fontWeightParamName = "FontWeight";
        string _fontSizeParamDescription = "Font Size";
        string _fontSizeParamDisplayName = "Size";
        string _fontSizeParamName = "FontSize";

        // Constructor
        public ServerSideParametersOutProvider()
        {
            // Create Array List objects.
            _fontFamilyArrayList = new ArrayList();
            _fontColorArrayList = new ArrayList();
            _fontWeightArrayList = new ArrayList();
            _fontSizeArrayList = new ArrayList();

            // Add items to _fontFamilyArrayList.
            _fontFamilyArrayList.Add("Times");
            _fontFamilyArrayList.Add("Arial");
            _fontFamilyArrayList.Add("Verdana");
            _fontFamilyArrayList.Add("Courier");

            // Add items to _fontColorArrayList.
            _fontColorArrayList.Add("Black");
            _fontColorArrayList.Add("Red");
            _fontColorArrayList.Add("Green");
            _fontColorArrayList.Add("Yellow");
            _fontColorArrayList.Add("Blue");

            // Add items to _fontWeightArrayList.
            _fontWeightArrayList.Add("Normal");
            _fontWeightArrayList.Add("Bold");

            // Add items to _fontSizeArrayList.
            _fontSizeArrayList.Add("10pt");
            _fontSizeArrayList.Add("12pt");
            _fontSizeArrayList.Add("14pt");
            _fontSizeArrayList.Add("20pt");

        }

        // 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 IParametersOutProvider 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 IParametersOutProvider interface is allowed to 
                // <connect across pages.</param>
                RegisterInterface("MyParametersOutProviderInterface",        //InterfaceName    
                    InterfaceTypes.IParametersOutProvider,                    //InterfaceType
                    WebPart.UnlimitedConnections,                            //MaxConnections
                    ConnectionRunAt.Server,                                    //RunAtOptions
                    this,                                                    //InterfaceObject
                    "",                                                        //InterfaceClientReference
                    "Provide Parameters To",                                //MenuLabel
                    "Provides a font parameters to a consumer 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 connection state.
            if (interfaceName == "MyParametersOutProviderInterface")
            {
                _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 that all of the Web Part's controls are created.
            EnsureChildControls();

            // Check if connected.
            if(_connected)
            {
                // If there is a listener, fire the 
                // ParametersOutProviderInit event.
                if (ParametersOutProviderInit != null)
                {
                    // Need to create the 
                    // ParametersOutProviderInitEventArgs object for 
                    // the ParametersOutProviderInit event.
                    ParametersOutProviderInitEventArgs parametersOutProviderInitInitEventArgs = new ParametersOutProviderInitEventArgs();
                    
                    // Set the ParameterOutProperties.
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties = new ParameterOutProperty[4];

                    // There are 4 parameters types that will be 
                    // passed: Font Family, Color, Weight, and Size.
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[0] = new ParameterOutProperty();
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[0].Description = _fontFamilyParamDescription;
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[0].ParameterDisplayName = _fontFamilyParamDisplayName;
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[0].ParameterName = _fontFamilyParamName;

                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[1] = new ParameterOutProperty();
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[1].Description = _fontColorParamDescription;
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[1].ParameterDisplayName = _fontColorParamDisplayName;
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[1].ParameterName = _fontColorParamName;

                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[2] = new ParameterOutProperty();
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[2].Description = _fontWeightParamDescription;
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[2].ParameterDisplayName = _fontWeightParamDisplayName;
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[2].ParameterName = _fontWeightParamName;

                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[3] = new ParameterOutProperty();
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[3].Description = _fontSizeParamDescription;
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[3].ParameterDisplayName = _fontSizeParamDisplayName;
                    parametersOutProviderInitInitEventArgs.ParameterOutProperties[3].ParameterName = _fontSizeParamName;

                    // Fire the ParametersOutProviderInit event.
                    ParametersOutProviderInit(this, parametersOutProviderInitInitEventArgs);
                }
            }
        }

        // Step #8: Override the PartCommunicationMain() method.
        // The PartCommunicationMain method is called by the Web Part 
        // infrastructure on the client during the ASP.NET PreRender
        // event to allow the part to pass its primary data to the 
        // other connected parts.
        // It is important to always fire either the ParametersOutReady 
        // or the NoParametersOut event. Some parts
        // may not behave properly if they are left waiting for this 
        // information.
        // ParametersOutReady should be fired to send the parameters.
        // NoParametersOut should be fired to indicate that there is no 
        // change in the parameters.
        
        public override void PartCommunicationMain()
        {
            // Ensure that all of the Web Part's controls are created.
            EnsureChildControls();

            // Check if connected.
            if(_connected)
            {
                // If there is a listener, fire the ParametersOutReady event.
                if(ParametersOutReady != null)
                {
                    // Need to create the ParametersOutReadyEventArgs 
                    // object for the ParametersOutReady event.
                    ParametersOutReadyEventArgs parametersOutReadyEventArgs = new ParametersOutReadyEventArgs();

                    if(_parametersReadyButtonClicked) //ParametersOutReady Button was clicked
                    {
                        // If there is a listener, fire the 
                        // ParametersOutReady event.
                        if(ParametersOutReady != null)
                        {
                            // Set the values to the values of the text
                            // boxes.
                            parametersOutReadyEventArgs.ParameterValues = new string[4];
                            parametersOutReadyEventArgs.ParameterValues[0] = _fontFamilyListBox.SelectedItem.Value;
                            parametersOutReadyEventArgs.ParameterValues[1] = _fontColorListBox.SelectedItem.Value;
                            parametersOutReadyEventArgs.ParameterValues[2] = _fontWeightListBox.SelectedItem.Value;
                            parametersOutReadyEventArgs.ParameterValues[3] = _fontSizeListBox.SelectedItem.Value;

                            // Fire the ParametersOutReady event.
                            ParametersOutReady(this, parametersOutReadyEventArgs);

                            _parametersReadyButtonClicked = false;
                        }
                    }
                    //The NoParametersOut button was clicked.
                    else if(_noParametersOutButtonClicked) 
                    {
                        // If there is a listener, fire the 
                        // NoParametersOut event.
                        if(NoParametersOut != null)
                        {
                            // Fire the event.
                            NoParametersOut(this, new EventArgs());

                            _noParametersOutButtonClicked = false;
                        }
                    }
                    // The user didn't click any button.
                    else 
                    {
                        // If there is a listener, fire the 
                        // NoParametersOut event.
                        if(NoParametersOut != null)
                        {
                            // Fire the event.
                            NoParametersOut(this, new EventArgs());

                            _noParametersOutButtonClicked = false;
                        }
                    }
                }
            }
        }

        // Step #9: Override the GetInitEventArgs method.
        // GetInitEventArgs() is called by the Web Part infrastructure 
        // during the ASP.NET PreRender event to gather the 
        // necessary information it needs to build the transformer 
        // dialog. The transformer dialog 
        // is needed when connecting different interfaces such as 
        // IRowProvider to ICellConsumer. The transformer dialog allows 
        // the user to map the fields between the 
        // interfaces. The GetInitEventArgs()method only needs to be 
        // implemented for interfaces that
        // can participate in a transformer which are the following:
        // ICellConsumer, IRowProvider, IFilterConsumer, 
        // IParametersOutProvider, IParametersInConsumer.
        // <param name="interfacename">Name of interface on which the 
        // Web Part infrastructure is requesting information</param>
        // <returns>An InitEventArgs object</returns>
        public override InitEventArgs GetInitEventArgs(string interfaceName)
        {
            // Check if this is my particular ParametersOut interface.
            if (interfaceName == "MyParametersOutProviderInterface")
            {
                // Ensure that child controls have been created
                EnsureChildControls();

                // Need to create the 
                // ParametersOutProviderInitEventArgs object for the 
                // ParametersOutProviderInit event.
                ParametersOutProviderInitEventArgs parametersOutProviderInitInitEventArgs = new ParametersOutProviderInitEventArgs();
                    
                // Set the ParameterOutProperties.
                parametersOutProviderInitInitEventArgs.ParameterOutProperties = new ParameterOutProperty[4];

                //There are 4 parameters types that will be passed: 
                // Font Family, Color, Weight, and Size
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[0] = new ParameterOutProperty();
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[0].Description = _fontFamilyParamDescription;
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[0].ParameterDisplayName = _fontFamilyParamDisplayName;
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[0].ParameterName = _fontFamilyParamName;

                parametersOutProviderInitInitEventArgs.ParameterOutProperties[1] = new ParameterOutProperty();
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[1].Description = _fontColorParamDescription;
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[1].ParameterDisplayName = _fontColorParamDisplayName;
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[1].ParameterName = _fontColorParamName;

                parametersOutProviderInitInitEventArgs.ParameterOutProperties[2] = new ParameterOutProperty();
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[2].Description = _fontWeightParamDescription;
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[2].ParameterDisplayName = _fontWeightParamDisplayName;
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[2].ParameterName = _fontWeightParamName;

                parametersOutProviderInitInitEventArgs.ParameterOutProperties[3] = new ParameterOutProperty();
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[3].Description = _fontSizeParamDescription;
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[3].ParameterDisplayName = _fontSizeParamDisplayName;
                parametersOutProviderInitInitEventArgs.ParameterOutProperties[3].ParameterName = _fontSizeParamName;
                    
                // Return the parametersOutProviderInitInitEventArgs 
                // object.
                return(parametersOutProviderInitInitEventArgs);
            }
            else
            {
                return(null);
            }
        }

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

            // Ensure that all of the Web Part's controls are created.
            EnsureChildControls();

            // Check if connected.
            if(_connected)
            {
                // Render List Box table.
                output.RenderBeginTag(HtmlTextWriterTag.Table); //Begin Table

                // Font Family Row.
                output.RenderBeginTag(HtmlTextWriterTag.Tr);    //Begin TR
                output.RenderBeginTag(HtmlTextWriterTag.Td);    //Begin TD
                output.RenderBeginTag(HtmlTextWriterTag.B);        //Begin B
                output.Write(_fontFamilyParamDisplayName + ": ");    //Render List Box Label
                output.RenderEndTag();                            //End </B>
                output.RenderEndTag();                            //End </TD>
                output.RenderBeginTag(HtmlTextWriterTag.Td);    //Begin TD
                _fontFamilyListBox.RenderControl(output);        //Render list box
                output.RenderEndTag();                            //End </TD>
                output.RenderEndTag();                            //End </TR>

                // Font Color Row.
                output.RenderBeginTag(HtmlTextWriterTag.Tr);    //Begin TR
                output.RenderBeginTag(HtmlTextWriterTag.Td);    //Begin TD
                output.RenderBeginTag(HtmlTextWriterTag.B);        //Begin B
                output.Write(_fontColorParamDisplayName + ": ");    //Render List Box Label
                output.RenderEndTag();                            //End </B>
                output.RenderEndTag();                            //End </TD>
                output.RenderBeginTag(HtmlTextWriterTag.Td);    //Begin TD
                _fontColorListBox.RenderControl(output);        //Render list box
                output.RenderEndTag();                            //End </TD>
                output.RenderEndTag();                            //End </TR>

                // Font Weight Row.
                output.RenderBeginTag(HtmlTextWriterTag.Tr);    //Begin TR
                output.RenderBeginTag(HtmlTextWriterTag.Td);    //Begin TD
                output.RenderBeginTag(HtmlTextWriterTag.B);        //Begin B
                output.Write(_fontWeightParamDisplayName + ": ");    //Render List Box Label
                output.RenderEndTag();                            //End </B>
                output.RenderEndTag();                            //End </TD>
                output.RenderBeginTag(HtmlTextWriterTag.Td);    //Begin TD
                _fontWeightListBox.RenderControl(output);        //Render list box
                output.RenderEndTag();                            //End </TD>
                output.RenderEndTag();                            //End </TR>

                // Font Size Row.
                output.RenderBeginTag(HtmlTextWriterTag.Tr);    //Begin TR
                output.RenderBeginTag(HtmlTextWriterTag.Td);    //Begin TD
                output.RenderBeginTag(HtmlTextWriterTag.B);        //Begin B
                output.Write(_fontSizeParamDisplayName + ": ");    //Render List Box Label
                output.RenderEndTag();                            //End </B>
                output.RenderEndTag();                            //End </TD>
                output.RenderBeginTag(HtmlTextWriterTag.Td);    //Begin TD
                _fontSizeListBox.RenderControl(output);        //Render list box
                output.RenderEndTag();                            //End </TD>
                output.RenderEndTag();                            //End </TR>

                output.RenderEndTag();                            //End <Table>

                
                // Render buttons.
                _parametersReadyButton.RenderControl(output);
                _noParametersOutButton.RenderControl(output);

                // 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();

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

        }

        // Create Web Part user interface controls.
        protected override void CreateChildControls()
        {
            // Create List Boxes.
            _fontFamilyListBox = new DropDownList();
            _fontColorListBox = new DropDownList();
            _fontWeightListBox = new DropDownList();
            _fontSizeListBox = new DropDownList();

            // Set List Box IDs.
            _fontFamilyListBox.ID = "FontFamilyListBox";
            _fontColorListBox.ID = "FontColorListBox";
            _fontWeightListBox.ID = "FontWeightListBox";
            _fontSizeListBox.ID = "FontSizeListBox";

            // Set List Box Values.
            _fontFamilyListBox.DataSource = _fontFamilyArrayList;
            _fontColorListBox.DataSource = _fontColorArrayList;
            _fontWeightListBox.DataSource = _fontWeightArrayList;
            _fontSizeListBox.DataSource = _fontSizeArrayList;

            // Databind the List Boxes.
            _fontFamilyListBox.DataBind();
            _fontColorListBox.DataBind();
            _fontWeightListBox.DataBind();
            _fontSizeListBox.DataBind();

            // Add List Boxes to Controls Collection.
            Controls.Add(_fontFamilyListBox);
            Controls.Add(_fontColorListBox);
            Controls.Add(_fontWeightListBox);
            Controls.Add(_fontSizeListBox);

            // Create the ParametersOutReady button.
            _parametersReadyButton = new Button();
            _parametersReadyButton.ID = "ParametersOutReadyButton";
            _parametersReadyButton.Text = "Fire ParametersOutReady";
            Controls.Add(_parametersReadyButton);

            // Create the NoParametersOut button.
            _noParametersOutButton = new Button();
            _noParametersOutButton.ID = "NoParametersOutButton";
            _noParametersOutButton.Text = "Fire NoParametersOut";
            Controls.Add(_noParametersOutButton);


            // Hook up button clicks.
            _parametersReadyButtonClicked = false; // Initialize to false -- user hasn't clicked yet
            _parametersReadyButton.Click += new EventHandler(ParametersOutReadyButtonClicked); // listen for Button's click event

            _noParametersOutButtonClicked = false; // Initialize to false -- user hasn't clicked yet
            _noParametersOutButton.Click += new EventHandler(NoParametersOutButtonClicked); // listen for Button's click event
        }

        // The ParametersOutReadyButton OnClick event handler.
        // <param name="sender">The Button object</param>
        // <param name="e">The Event Arguments</param>
        private void ParametersOutReadyButtonClicked(object sender, EventArgs e)
        {
            _parametersReadyButtonClicked = true; //user clicked button, set to true
        }

        
        // The NoParametersOutButton OnClick event handler.
        // <param name="sender">The Button object</param>
        // <param name="e">The Event Arguments</param>
        private void NoParametersOutButtonClicked(object sender, EventArgs e)
        {
            _noParametersOutButtonClicked = true; //user clicked button, set to true
        }
    }
}

См. также

Справочные материалы

Элементы IParametersOutProvider

Пространство имен Microsoft.SharePoint.WebPartPages.Communication