TableCallback Delegate

Note: This delegate is new in the .NET Framework version 2.0.

References the method to call when retrieving table data from a provider.

Namespace: System.Web.UI.WebControls.WebParts
Assembly: System.Web (in system.web.dll)

'Declaration
Public Delegate Sub TableCallback ( _
	tableData As ICollection _
)
'Usage
Dim instance As New TableCallback(AddressOf HandlerMethod)
/** @delegate */
public delegate void TableCallback (
	ICollection tableData
)
JScript supports the use of delegates, but not the declaration of new ones.

Parameters

tableData

The data to retrieve from the provider.

When a Web Parts control implements the IWebPartTable interface and serves as a provider in a Web Parts connection, the consumer or transformer must retrieve and process the table data from the provider. The TableCallback delegate represents the method to call for processing the provider data.

The GetTableData method contains a TableCallback delegate parameter.

The following code example contains a Web Parts control named TableProviderWebPart that serves as a provider of data in the form of a table. The control includes an implementation of the GetTableData method, which receives a parameter of type TableCallback. This method calls the method represented by the TableCallback delegate passing the table data.

Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Reflection
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

'This sample code creates a Web Parts control that acts as a provider of table data.
Namespace Samples.AspNet.VB.Controls

    Public NotInheritable Class TableProviderWebPart
        Inherits WebPart
        Implements IWebPartTable

        Private _table As DataTable


        Public Sub New()
            _table = New DataTable()

            Dim col As New DataColumn()
            col.DataType = GetType(String)
            col.ColumnName = "Name"
            _table.Columns.Add(col)

            col = New DataColumn()
            col.DataType = GetType(String)
            col.ColumnName = "Address"
            _table.Columns.Add(col)

            col = New DataColumn()
            col.DataType = GetType(Integer)
            col.ColumnName = "ZIP Code"
            _table.Columns.Add(col)

            Dim row As DataRow = _table.NewRow()
            row("Name") = "John Q. Public"
            row("Address") = "123 Main Street"
            row("ZIP Code") = 98000
            _table.Rows.Add(row)

        End Sub 'New

        <ConnectionProvider("Table")> _
        Public Function GetConnectionInterface() As IWebPartTable
            Return New TableProviderWebPart()

        End Function 'GetConnectionInterface

        Public ReadOnly Property Schema() As PropertyDescriptorCollection _
            Implements IWebPartTable.Schema
            Get
                Return TypeDescriptor.GetProperties(_table.DefaultView(0))
            End Get
        End Property

        Public Property ConnectionPointEnabled() As Boolean
            Get
                Dim o As Object
                o = ViewState("ConnectionPointEnabled")
                If Not (o Is Nothing) Then
                    Return CBool(o)
                Else
                    Return True
                End If

            End Get
            Set(ByVal value As Boolean)
                ViewState("ConnectionPointEnabled") = value
            End Set
        End Property

        Public Sub GetTableData(ByVal callback As TableCallback) _
            Implements IWebPartTable.GetTableData
            callback(_table.Rows)

        End Sub 'GetTableData
    End Class 'TableProviderWebPart           

End Namespace

In the OnPreRender method, the consumer calls GetTableData in TableProviderWebPart and passes its GetTableData method as the delegate to call with the table data, as shown in the following code example.

Imports System
Imports System.ComponentModel
Imports System.Reflection
Imports System.Collections
Imports System.Data
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

    Public Class TableConsumerWebPart
        Inherits WebPart

        Private _provider As IWebPartTable
        Private _tableData As ICollection

        Private Sub GetTableData(ByVal tableData As ICollection)
            _tableData = CType(tableData, ICollection)

        End Sub 'GetTableValue

        Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
            If Not (_provider Is Nothing) Then
                _provider.GetTableData((New TableCallback(AddressOf GetTableData)))
            End If
            'MyBase.OnPreRender(e)

        End Sub 'OnPreRender

        Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)

            If Not (_provider Is Nothing) Then
                Dim props As PropertyDescriptorCollection = _provider.Schema
                Dim count As Integer = 0

                If Not (props Is Nothing) AndAlso props.Count > 0 _
                  AndAlso Not (_tableData Is Nothing) Then
                    For Each prop As PropertyDescriptor In props
                        For Each o As DataRow In _tableData
                            writer.Write(prop.DisplayName & ": " & o(count).ToString())
                        Next
                        writer.WriteBreak()
                        writer.WriteLine()
                        count = count + 1
                    Next
                Else
                    writer.Write("No data")
                End If
            Else
                writer.Write("Not connected")
            End If

        End Sub 'RenderContents

        <ConnectionConsumer("Table")> _
        Public Sub SetConnectionInterface(ByVal provider As IWebPartTable)
            _provider = provider

        End Sub 'SetConnectionInterface

        Private Class TableConsumerConnectionPoint
            Inherits ConsumerConnectionPoint

            Public Sub New(ByVal callbackMethod As MethodInfo, _
              ByVal interfaceType As Type, ByVal controlType As Type, _
              ByVal name As String, ByVal id As String, _
              ByVal allowsMultipleConnections As Boolean)
                MyBase.New(callbackMethod, interfaceType, controlType, _
                  name, id, allowsMultipleConnections)

            End Sub 'New
        End Class 'TableConsumerConnectionPoint 
    End Class 'TableConsumerWebPart

End Namespace

The two controls and the connection are included in a Web page, as shown in the following example.

<%@ Page Language="VB" %>
<%@ Register tagprefix=wp Namespace=Samples.AspNet.VB.Controls  %>

<script runat="server">

</script>
<html>
<head id="Head1" runat="server">
    <title>ITable Test Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <!-- A static or dynamic connection is required to 
             link two Web Parts controls. --->
        <asp:webpartmanager id="WebPartManager1" runat="server">
            <StaticConnections>
                <asp:WebPartConnection id=wp1 ProviderID=provider1 
                   ConsumerID=consumer1>
                </asp:WebPartConnection>
            </StaticConnections>
        </asp:webpartmanager>
        <asp:webpartzone id="WebPartZone1" runat="server">
            <zoneTemplate>
            <!-- The following two lines define the two 
                 connected controls. --->
            <wp:TableProviderWebPart ID=provider1 runat=Server 
               title="Web Parts Table Provider Control" />
            <wp:TableConsumerWebPart ID=consumer1 runat=Server 
               title="Web Parts Table Consumer Control"/>
            </zoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0

Community Additions

ADD
Show: