Aracılığıyla paylaş


ConnectionProviderAttribute Sınıf

Tanım

Web Bölümleri bağlantısında sağlayıcı olarak davranan bir sunucu denetiminde geri çağırma yöntemini tanımlar ve geliştiricilerin sağlayıcının bağlantı noktasıyla ilgili ayrıntıları belirtmesine olanak tanır.

public ref class ConnectionProviderAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public class ConnectionProviderAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type ConnectionProviderAttribute = class
    inherit Attribute
Public Class ConnectionProviderAttribute
Inherits Attribute
Devralma
ConnectionProviderAttribute
Öznitelikler

Örnekler

Aşağıdaki kod örneği, bir sağlayıcı denetimindeki ConnectionProviderAttribute bir geri çağırma yönteminde meta veri öğesinin nasıl bildirilerek sınıfını ConnectionProviderAttribute kullanmayı gösterir. Oluşturucunun en basit aşırı yüklemesinin kullanıldığını unutmayın; displayName yalnızca parametre değeri sağlanır.

[ConnectionProvider("Row")]
public IWebPartRow GetConnectionInterface()
{
    return new RowProviderWebPart();
}
<ConnectionProvider("Row")> _
Public Function GetConnectionInterface() As IWebPartRow
    Return New RowProviderWebPart()

End Function 'GetConnectionInterface

Aşağıdaki kod örnekleri, sınıfını kullanarak WebPartConnection iki Web Bölümü denetimi arasında temel, statik bir bağlantı oluşturmayı göstermektedir. Sağlayıcı ve tüketici kodu dosyaları, .aspx sayfasını içeren uygulama klasörünün altındaki App_Code klasörüne yerleştirilmelidir.

İlk örnekte sağlayıcı olarak davranan bir sınıf gösterilmektedir. Meta veri öğesiyle bir yöntemin geri çağırma yöntemi olarak belirlendiğini ConnectionProviderAttribute fark edin.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
//This sample code creates a Web Parts control that acts as a provider of row data.
namespace My 
{
    public sealed class RowProviderWebPart : WebPart, IWebPartRow 
    {

        private DataTable _table;

        public RowProviderWebPart() 
        {
            _table = new DataTable();

            DataColumn col = new DataColumn();
            col.DataType = typeof(string);
            col.ColumnName = "Name";
            _table.Columns.Add(col);

            col = new DataColumn();
            col.DataType = typeof(string);
            col.ColumnName = "Address";
            _table.Columns.Add(col);

            col = new DataColumn();
            col.DataType = typeof(int);
            col.ColumnName = "ZIP Code";
            _table.Columns.Add(col);

            DataRow row = _table.NewRow();
            row["Name"] = "John Q. Public";
            row["Address"] = "123 Main Street";
            row["ZIP Code"] = 98000;
            _table.Rows.Add(row);
        }
        [ConnectionProvider("Row")]
        public IWebPartRow GetConnectionInterface()
        {
            return new RowProviderWebPart();
        }
        public PropertyDescriptorCollection Schema 
        {
            get {
                return TypeDescriptor.GetProperties(_table.DefaultView[0]);
                }
        }
        public void GetRowData(RowCallback callback)
        {
            callback(_table.Rows);
        }
    }
}
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 row data.
Namespace MyCustomWebPart

    Public NotInheritable Class RowProviderWebPart
        Inherits WebPart
        Implements IWebPartRow

        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

        <ConnectionProvider("Row")> _
        Public Function GetConnectionInterface() As IWebPartRow
            Return New RowProviderWebPart()

        End Function 'GetConnectionInterface

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

        Public Sub GetRowData(ByVal callback As RowCallback) _
            Implements IWebPartRow.GetRowData
            callback(_table.Rows)

        End Sub
    End Class

İkinci örnekte tüketici olarak davranan bir sınıf gösterilmektedir.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
// This sample code creates a Web Parts control that acts as a consumer of row data.
namespace My 
{

    public sealed class RowConsumerWebPart : WebPart {
        private IWebPartRow _provider;
        private ICollection _tableData;
    
            private void GetRowData(object rowData)
            {
                _tableData = (ICollection)rowData;
            }

        protected override void OnPreRender(EventArgs e)
        {
                if (_provider != null)
                {
                    _provider.GetRowData(new RowCallback(GetRowData));
                }
        }

        protected override void RenderContents(HtmlTextWriter writer) {
            if (_provider != null) {
                PropertyDescriptorCollection props = _provider.Schema;
                int count = 0;
                if (props != null && props.Count > 0 && _tableData != null) {
                    foreach (PropertyDescriptor prop in props) 
                    {
                        foreach (DataRow o in _tableData)
                        {
                            writer.Write(prop.DisplayName + ": " + o[count]);
                            writer.WriteBreak();
                            writer.WriteLine();
                            count = count + 1;
                        }
                    }
                }
                else {
                    writer.Write("No data");
                }
            }
            else {
                writer.Write("Not connected");
            }
        }
        [ConnectionConsumer("Row")]
        public void SetConnectionInterface(IWebPartRow provider) 
        {
            _provider = provider;
        }
         }
    }
//}
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 consumer of row data.
Namespace MyCustomWebPart

    Public NotInheritable Class RowConsumerWebPart
        Inherits WebPart
        Private _provider As IWebPartRow
        Private _tableData As ICollection


        Private Sub GetRowData(ByVal rowData As Object)
            _tableData = CType(rowData, ICollection)

        End Sub


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

        End Sub



        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
                    Dim prop As PropertyDescriptor
                    For Each prop In props
                        Dim o As DataRow
                        For Each o In _tableData
                            writer.Write(prop.DisplayName & ": " & o(count))
                            writer.WriteBreak()
                            writer.WriteLine()
                            count = count + 1
                        Next o
                    Next prop
                Else
                    writer.Write("No data")
                End If
            Else
                writer.Write("Not connected")
            End If

        End Sub

        <ConnectionConsumer("Row")> _
        Public Sub SetConnectionInterface(ByVal provider As IWebPartRow)
            _provider = provider

        End Sub
    End Class

Son örnekte, iki denetimi içeren ASP.NET sayfası gösterilmektedir.

<%@ page language="C#" %>
<%@ register TagPrefix="my" Namespace="My" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>IRow 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 specify the two connected controls. --->
                <my:RowProviderWebPart ID="provider1" runat="server" ToolTip="Row Provider Control" />
                <my:RowConsumerWebPart ID="consumer1" runat="server" ToolTip="Row Consumer Control" />
            </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>
<%@ page language="VB" %>
<%@ Register TagPrefix="my" Namespace="MyCustomWebPart" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>IRow 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>
                <my:RowProviderWebPart ID="provider1" runat="server" ToolTip="Row Provider Control" />
                <my:RowConsumerWebPart ID="consumer1" runat="server" ToolTip="Row Consumer Control" />
           </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>

Açıklamalar

Web Bölümleri bağlantısı, bir bölgede bulunan ve bir WebPartZoneBase denetimden diğerine geçirilen arabirim örneği aracılığıyla veri paylaşan iki sunucu denetiminden oluşur. Arabirim örneğine hizmet veren denetim sağlayıcı olarak adlandırılır ve arabirim örneğini alan ve verileri işleyen veya görüntüleyen denetim tüketici olarak adlandırılır. Bağlantılarla ilgili ayrıntılar için bkz WebPartConnection . sınıf ve Web Bölümleri Bağlantılarına Genel Bakış.

Bir bağlantıdaki sağlayıcı denetimi bir denetim ya da herhangi bir WebPart tür sunucu veya kullanıcı denetimi olabilir, ancak geri çağırma yöntemi olarak belirlenmiş bir yöntemi olmalıdır. Geri çağırma yöntemi bağlantı işlemi sırasında çağrılır ve amacı tüketiciye veri içeren bir arabirim örneği döndürmektir. Bir sağlayıcıda geri çağırma yöntemi olarak hizmet veren yöntemi atamak için yöntemine bir ConnectionProviderAttribute meta veri öğesi eklemeniz gerekir (öğesi sınıfını ConnectionProviderAttribute temel alır).

Nesnesi, bir sağlayıcıda geri çağırma yöntemini belirlemeye ek olarak, sağlayıcının ConnectionProviderAttribute bağlantı noktasıyla ilgili belirli ayrıntıları belirtmenize de olanak tanır. Sağlayıcı bağlantı noktası, sağlayıcının ProviderConnectionPoint denetim türü, aynı anda birden çok tüketiciye bağlanıp bağlanamayacağı, sağlayıcının tüketicilere hangi arabirim türüne hizmet ettiğini, geri çağırma yöntemiyle ilgili ayrıntıları ve kullanıcı arabiriminde (UI) sağlayıcı bağlantı noktasını temsil eden bir görünen ad dahil olmak üzere bağlantı kurmak için gereken tüm ayrıntıları kapsayan sınıfının bir örneğidir. Her Web Bölümü bağlantısı, sağlayıcı denetimiyle ilişkili bir sağlayıcı bağlantı noktası içerir.

Meta veri öğesini bir sağlayıcıdaki geri çağırma yöntemine eklediğinizde ConnectionProviderAttribute , sağlayıcı bağlantı noktası hakkında aşağıdaki ayrıntıları belirtmek için de kullanabilirsiniz: bağlantı noktası için görünen ad (ayrıntılar için bkz DisplayName . özellik), sağlayıcının aynı anda birden çok tüketiciye bağlanıp bağlanamayacağı (ayrıntılar için özelliğine AllowsMultipleConnections bakın), bağlantı noktası için bir kimlik (ayrıntılar için özelliğine ID bakın) ve sağlayıcının kullandığı bağlantı noktasının türü (ayrıntılar için özelliğine ConnectionPointType bakın). Sınıfın oluşturucusunun dört aşırı yüklemesi, sınıfın ConnectionProviderAttribute yeni bir örneği oluşturulduğunda bu bağlantı noktası özelliklerinden biri veya daha fazlası için değer belirtmenize olanak sağlayan parametrelere sahiptir. Sağlayıcı bağlantı noktası özelliklerinin çoğu program aracılığıyla da ayarlanabilir; öğesini kullanarak ConnectionProviderAttribute bunları ayarlamak isteğe bağlıdır.

Not

Meta veri öğesini sağlayıcıdaki ConnectionProviderAttribute bir geri çağırma yöntemine eklediğinizde, her zaman belirtmeniz gereken tek gerekli parametre parametresidir displayName (ayrıntılar için oluşturucu aşırı yüklemesine ConnectionProviderAttribute(String) bakın). Bu parametrenin değeri özelliğine DisplayName atanır ve kullanıcı bağlantı kullanıcı arabirimini açtığında (denetim tarafından ConnectionsZone oluşturulur), görünen ad kullanıcı arabirimindeki sağlayıcı bağlantı noktasını temsil eder. Bir sağlayıcı denetiminde birden çok geri çağırma yöntemi belirlerseniz, aralarından seçim yapabileceğiniz birden çok olası bağlantı noktası olur ve meta veri öğesini her geri çağırma yöntemine eklediğinizde ConnectionProviderAttribute , her sağlayıcı bağlantı noktasının id bilinen, benzersiz bir tanımlayıcıya sahip olması için parametre için bir değer de belirtmeniz gerekir.

Oluşturucular

ConnectionProviderAttribute(String)

Sağlayıcı bağlantı noktası için bir görünen ad belirterek sınıfının yeni bir örneğini ConnectionProviderAttribute başlatır.

ConnectionProviderAttribute(String, String)

Sağlayıcı bağlantı noktası için görünen ad ve kimlik belirterek sınıfının yeni bir örneğini ConnectionProviderAttribute başlatır.

ConnectionProviderAttribute(String, String, Type)

Sağlayıcı bağlantı noktası için kullanılacak bir görünen ad, kimlik ve belirli bir bağlantı noktası nesnesi türünü belirterek sınıfının yeni bir örneğini ConnectionProviderAttribute başlatır.

ConnectionProviderAttribute(String, Type)

Sağlayıcı bağlantı noktası için kullanılacak bir görünen ad ve belirli bir bağlantı noktası nesnesi türü belirterek sınıfının yeni bir örneğini ConnectionProviderAttribute başlatır.

Özellikler

AllowsMultipleConnections

Bağlantı noktasının birden çok bağlantıya izin verip vermeyeceğini belirten bir değer alır veya ayarlar.

ConnectionPointType

Sağlayıcı denetimiyle ilişkili bağlantı noktasının türünü alır.

DisplayName

Sağlayıcı bağlantı noktasının kolay adını alır.

DisplayNameValue

Yerelleştirme senaryolarında kullanmak üzere özelliğinin değeri olarak kullanılan dizeyi DisplayName alır veya ayarlar.

ID

Sağlayıcı bağlantı noktası nesnesinin benzersiz kimliğini temsil eden bir dize alır.

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ayrıca bkz.