Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
Este tópico ainda não foi avaliado como - Avalie este tópico

Interface IWebPartRow

Define uma interface do provedor para conectar dois controles de servidor usando um único campo de dados.

Namespace:  System.Web.UI.WebControls.WebParts
Assembly:  System.Web (em System.Web.dll)
public interface IWebPartRow

O tipo IWebPartRow expõe os membros a seguir.

  NomeDescrição
Propriedade públicaSchemaObtém as informações de esquema para uma linha de dados que é usada para compartilhar dados entre dois WebPart controles.
Superior
  NomeDescrição
Método públicoGetRowDataRetorna os dados para a linha que está sendo usado pela interface como a base de uma conexão entre dois WebPart controles.
Superior

Essa interface foi projetada para ser usado com conexões de Web Parts. Em uma conexão de Web Parts, dois controles de servidor que residem em um WebPartZoneBase zona estabelecer uma conexão e compartilhar dados, com um controle que atua como o consumidor e o outro controle que atua como um provedor. O mecanismo para compartilhamento de dados em uma conexão de Web Parts é uma instância da interface, o que o provedor serve para o consumidor por meio de um método de retorno de chamada. Para estabelecer uma conexão, o consumidor e provedor devem ambas funcionam com o mesmo tipo de interface para compartilhamento de dados. Se o consumidor não reconhecer o tipo de interface enviado pelo provedor, ele ainda é possível conectar-se os controles por meio de um transformador (um WebPartTransformer objeto) que converte a instância da interface enviada pelo provedor em um tipo que o consumidor reconhece. Para obter detalhes sobre conexões, consulte WebPartConnection e Web Parts Connections Overview.

O IWebPartRow é uma interface de provedor incluída com o controle de Web Parts definido como uma interface padrão para a criação de conexões com base em uma linha de dados. Você também pode criar interfaces personalizadas para usar com conexões de Web Parts, mas em muitos aplicativos de Web orientados a dados, é útil criar conexões com base em um campo comum (para obter detalhes, consulte a IWebPartField interface), tabela (para obter detalhes, consulte a IWebPartTable interface), ou linha da fonte de dados. Em uma conexão típica, um WebPart controlar atuando como um provedor deve implementar a IWebPartRow interface e fornecer uma instância da interface aos consumidores em um método callback especial. Por exemplo, o provedor pode implementar um IWebPartRow interface para uma linha que corresponde a um usuário na sua tabela de informações do usuário. Outro WebPart controlar agindo como um consumidor definiria um método especial para receber a instância da interface e pode, em seguida, extrair os dados do usuário, usá-lo para pesquisar informações adicionais sobre contas do usuário e exibir todas as informações relacionadas a esse usuário na página.

O IWebPartRow interface tem dois membros expostos. O Schema propriedade retorna informações de esquema sobre a linha de dados encapsulada em um PropertyDescriptorCollection objeto. O GetRowData método declara um método que usa de um implementador (como, por exemplo, um controle do provedor) para recuperar dados da instância da interface da linha quando o método de retorno de chamada é invocado.

O exemplo de código a seguir demonstra como criar uma conexão estática entre dois controles usando o IWebPartRow interface. O exemplo de código tem três partes:

  • O código para dois custom fonte WebPart controles que podem formar uma conexão usando o IWebPartRow interface, com um controle que atua como o provedor e o outro atuando como o consumidor.

  • Uma página da Web que hospeda os controles e declara a conexão estática no formato de persistência.

  • Uma descrição do que acontece quando o código de exemplo é executado.

A primeira parte do exemplo de código é o código-fonte para os dois controles personalizados. A primeira é o código para o provedor, que implementa o IWebPartRow interface. Para simplificar o exemplo, o provedor cria uma tabela com alguns dados em vez de se conectar a um banco de dados. O GetConnectionInterface método serve como ponto de conexão do provedor, o método de retorno de chamada que retorna a instância de interface para o consumidor. Como para o consumidor, ele recupera a instância da interface do provedor em seu método chamado SetConnectionInterface, que é marcado com um ConnectionConsumer atributo. Depois de recuperar a instância da interface, o consumidor, no seu OnPreRender chamadas de método, a implementação da GetRowData método no provedor, para recuperar os dados reais e gravá-lo à página.

Para o exemplo de código para ser executado, você deve compilar este código-fonte. Você pode compilá-lo explicitamente e colocar o assembly resultante na pasta Bin do seu site da Web ou o cache de assembly global. Alternativamente, você pode colocar o código-fonte na pasta App_Code do seu site, onde será compilado dinamicamente em tempo de execução. Este exemplo de código usa compilação dinâmica. Para uma explicação passo a passo que demonstre como compilar, consulte Walkthrough: Developing and Using a Custom Server Control.


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace Samples.AspNet.CS.Controls 
{
  // This sample code creates a Web Parts control that acts as a provider 
  // of row data.
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  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);
		}

  } // RowProviderWebPart


  // This sample code creates a Web Parts control that acts as a consumer 
  // of row data.
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]  
  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;
    }

  } // RowConsumerWebPart

} // Samples.AspNet.CS.Controls 



A segunda parte do exemplo de código é a página da Web que declara a conexão estática e hosts os controles. Próximo à parte superior da página é um Register diretiva que declara o namespace do código-fonte contido no diretório App_Code. A conexão for declarada usando um <asp:webpartconnection> elemento. Os controles personalizados do consumidor e provedor são declarados em um <zonetemplate> elemento dentro de um <asp:webpartzone> elemento, que é necessário para que eles possam se conectar (eles devem residir em uma zona que herda a partir o WebPartZoneBase classe).


<%@ page language="C#" %>
<%@ Register tagprefix="IRow" 
    Namespace="Samples.AspNet.CS.Controls" %>

<!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>
      <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>
            <irow:RowProviderWebPart ID="provider1" runat="server" 
              Title="Row Provider Control" />
            <irow:RowConsumerWebPart ID="consumer1" runat="server" 
              Title="Row Consumer Control" />
          </ZoneTemplate>
        </asp:webpartzone>
    </div>
    </form>
</body>
</html>


Carregar a página em um navegador. O controle do consumidor exibe os dados fornecidos a partir da linha especificada, o que o provedor disponibiliza por meio de uma instância de IWebPartRow interface.

.NET Framework

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.
Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft. Todos os direitos reservados.