Leggi in inglese

Condividi tramite


IDataItemContainer Interfaccia

Definizione

Consente ai contenitori di controlli con associazione a dati di identificare un oggetto dati per semplificare le operazioni di associazione dati.

C#
public interface IDataItemContainer : System.Web.UI.INamingContainer
Derivato
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrato come usare l'interfaccia IDataItemContainer . SimpleSpreadsheetControl è un controllo che visualizza dati in stile tabulare, simili a un DataGrid controllo o GridView . Contiene un set di SimpleSpreadsheetRow oggetti .

La SimpleSpreadsheetRow classe è una classe contenitore che implementa l'interfaccia IDataItemContainer . Anche se in questo esempio la proprietà dell'elemento di dati è denominata Datain modo intuitivo , la proprietà può essere implementata per eseguire il DataItem mapping a qualsiasi proprietà o valore restituito di un metodo.

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>");
            }
        }
    }
}

Nell'esempio di codice seguente viene illustrato come utilizzare e SimpleSpreadsheetControl AccessDataSource per visualizzare i dati in un database di 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>

Commenti

Le classi contenitore che implementano l'interfaccia IDataItemContainer possono specificare quale delle relative proprietà identifica l'elemento di dati per le operazioni di data binding, ad esempio l'associazione tardiva con la DataBinder classe .

Proprietà

DataItem

Se implementata, ottiene un elemento object utilizzato nelle operazioni semplificate di associazione dati.

DataItemIndex

Se implementata, ottiene l'indice dell'elemento di dati associato a un controllo.

DisplayIndex

Se implementata, ottiene la posizione dell'elemento di dati visualizzato in un controllo.

Metodi di estensione

GetDefaultValues(INamingContainer)

Ottiene l'insieme di valori predefiniti per il controllo dei dati specificato.

GetMetaTable(INamingContainer)

Ottiene i metadati della tabella per il controllo dei dati specificato.

SetMetaTable(INamingContainer, MetaTable)

Imposta i metadati della tabella per il controllo dei dati specificato.

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

Imposta il mapping dei valori predefiniti e dei metadati della tabella per il controllo dei dati specificato.

SetMetaTable(INamingContainer, MetaTable, Object)

Imposta il mapping dei valori predefiniti e dei metadati della tabella per il controllo dei dati specificato.

TryGetMetaTable(INamingContainer, MetaTable)

Determina se sono disponibili i metadati della tabella.

EnableDynamicData(INamingContainer, Type)

Abilita il comportamento dati dinamici per il controllo dei dati specificato.

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

Abilita il comportamento dati dinamici per il controllo dei dati specificato.

EnableDynamicData(INamingContainer, Type, Object)

Abilita il comportamento dati dinamici per il controllo dei dati specificato.

Si applica a

Prodotto Versioni
.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

Vedi anche