Ler en inglés

Compartir por


IDataItemContainer Interfaz

Definición

Permite a los contenedores del control enlazado a datos identificar un objeto de elemento de datos para las operaciones de enlace de datos simplificadas.

C#
public interface IDataItemContainer : System.Web.UI.INamingContainer
Derivado
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar la IDataItemContainer interfaz . SimpleSpreadsheetControl es un control que muestra datos de estilo tabular, similares a un DataGrid control o GridView . Contiene un conjunto de SimpleSpreadsheetRow objetos .

La SimpleSpreadsheetRow clase es una clase contenedora que implementa la IDataItemContainer interfaz . Aunque en este ejemplo, la propiedad del elemento de datos se denomina Dataintuitivamente , la DataItem propiedad se puede implementar para asignar a cualquier propiedad o valor devuelto de un método.

C#
using System;
using System.Collections;
using System.Data.Common;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Samples.AspNet.CS
{
    public class SimpleSpreadsheetControl : CompositeDataBoundControl
    {
        protected Table table = new Table();

        public virtual TableRowCollection Rows
        {
            get
            {
                return table.Rows;
            }
        }

        protected override int CreateChildControls(IEnumerable dataSource, bool dataBinding)
        {

            int count = 0;
            // If dataSource is not null, iterate through it and
            // extract each element from it as a row, then
            // create a SimpleSpreadsheetRow and add it to the
            // rows collection.
            if (dataSource != null)
            {

                SimpleSpreadsheetRow row;
                IEnumerator e = dataSource.GetEnumerator();

                while (e.MoveNext())
                {
                    object datarow = e.Current;
                    row = new SimpleSpreadsheetRow(count, datarow);
                    this.Rows.Add(row);
                    ++count;
                }

                Controls.Add(table);
            }
            return count;
        }
    }

    //
    //
    public class SimpleSpreadsheetRow : TableRow, IDataItemContainer
    {
        private object data;
        private int _itemIndex;

        public SimpleSpreadsheetRow(int itemIndex, object o)
        {
            data = o;
            _itemIndex = itemIndex;
        }

        public virtual object Data
        {
            get
            {
                return data;
            }
        }
        object IDataItemContainer.DataItem
        {
            get
            {
                return Data;
            }
        }
        int IDataItemContainer.DataItemIndex
        {
            get
            {
                return _itemIndex;
            }
        }
        int IDataItemContainer.DisplayIndex
        {
            get
            {
                return _itemIndex;
            }
        }
        protected override void RenderContents(HtmlTextWriter writer)
        {

            if (Data != null)
            {
                if (Data is System.Data.Common.DbDataRecord)
                {
                    DbDataRecord temp = (DbDataRecord)Data;
                    for (int i = 0; i < temp.FieldCount; ++i)
                    {
                        writer.Write("<TD>");
                        writer.Write(temp.GetValue(i).ToString());
                        writer.Write("</TD>");
                    }
                }
                else
                {
                    writer.Write("<TD>" + Data.ToString() + "</TD>");
                }
            }

            else
            {
                writer.Write("<TD>This is a test</TD>");
            }
        }
    }
}

En el ejemplo de código siguiente se muestra cómo usar el SimpleSpreadsheetControl control y AccessDataSource para mostrar datos en una base de datos de Access.

ASP.NET (C#)
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS"
    Assembly="Samples.AspNet.CS"  %>
<%@ Page language="c#" %>
<!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>
    <title>IDataItemContainer - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

      <aspSample:SimpleSpreadsheetControl
          id="SimpleSpreadsheet1"
          runat="server"
          datasourceid="AccessDataSource1" />

      <asp:accessdatasource
          id="AccessDataSource1"
          runat="server"
          datasourcemode="DataReader"
          datafile="Northwind.mdb"
          SelectCommand="SELECT OrderID,CustomerID,OrderDate,RequiredDate,
          ShippedDate FROM Orders WHERE EmployeeID = (SELECT EmployeeID 
          FROM Employees WHERE LastName = 'King')">
      </asp:accessdatasource>

    </form>
  </body>
</html>

Comentarios

Las clases de contenedor que implementan la IDataItemContainer interfaz pueden especificar cuál de sus propiedades identifica el elemento de datos para las operaciones de enlace de datos, como el enlace en tiempo de ejecución con la DataBinder clase .

Propiedades

DataItem

Cuando se implementa, obtiene un object utilizado en operaciones de enlace de datos simplificadas.

DataItemIndex

Cuando se implementa, obtiene el índice del elemento de datos enlazado a un control.

DisplayIndex

Cuando se implementa, obtiene la posición del elemento de datos tal como se muestra en un control.

Métodos de extensión

GetDefaultValues(INamingContainer)

Obtiene la colección de los valores predeterminados para el control de datos especificado.

GetMetaTable(INamingContainer)

Obtiene los metadatos de la tabla para el control de datos especificado.

SetMetaTable(INamingContainer, MetaTable)

Establece los metadatos de la tabla para el control de datos especificado.

SetMetaTable(INamingContainer, MetaTable, IDictionary<String,Object>)

Establece los metadatos de tabla y la asignación de valores predeterminados para el control de datos especificado.

SetMetaTable(INamingContainer, MetaTable, Object)

Establece los metadatos de tabla y la asignación de valores predeterminados para el control de datos especificado.

TryGetMetaTable(INamingContainer, MetaTable)

Determina si están disponibles los metadatos de la tabla.

EnableDynamicData(INamingContainer, Type)

Habilita el comportamiento de datos dinámicos para el control de datos especificado.

EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>)

Habilita el comportamiento de datos dinámicos para el control de datos especificado.

EnableDynamicData(INamingContainer, Type, Object)

Habilita el comportamiento de datos dinámicos para el control de datos especificado.

Se aplica a

Produto Versións
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Consulte también