Consente ai contenitori di controlli con associazione a dati di identificare un oggetto dati per semplificare le operazioni di associazione dati.
Assembly: System.Web (in System.Web.dll)
Public Interface IDataItemContainer _ Inherits INamingContainer
public interface IDataItemContainer : INamingContainer
public interface class IDataItemContainer : INamingContainer
type IDataItemContainer = interface interface INamingContainer end
Il tipo IDataItemContainer espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
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. |
| Nome | Descrizione | |
|---|---|---|
|
EnableDynamicData(Type) | Sottoposto a overload. Abilita il comportamento dati dinamici per il controllo dei dati specificato. (Definito da DataControlExtensions). |
|
EnableDynamicData(Type, Object) | Sottoposto a overload. Abilita il comportamento dati dinamici per il controllo dei dati specificato. (Definito da DataControlExtensions). |
|
EnableDynamicData(Type, IDictionary<String, Object>) | Sottoposto a overload. Abilita il comportamento dati dinamici per il controllo dei dati specificato. (Definito da DataControlExtensions). |
|
GetDefaultValues | Ottiene l'insieme di valori predefiniti per il controllo dei dati specificato. (Definito da DynamicDataExtensions). |
|
GetMetaTable | Ottiene i metadati della tabella per il controllo dei dati specificato. (Definito da DynamicDataExtensions). |
|
SetMetaTable(MetaTable) | Sottoposto a overload. Imposta i metadati della tabella per il controllo dei dati specificato. (Definito da DynamicDataExtensions). |
|
SetMetaTable(MetaTable, IDictionary<String, Object>) | Sottoposto a overload. Imposta il mapping dei valori predefiniti e dei metadati della tabella per il controllo dei dati specificato. (Definito da DynamicDataExtensions). |
|
SetMetaTable(MetaTable, Object) | Sottoposto a overload. Imposta il mapping dei valori predefiniti e dei metadati della tabella per il controllo dei dati specificato. (Definito da DynamicDataExtensions). |
|
TryGetMetaTable | Determina se sono disponibili i metadati della tabella. (Definito da DynamicDataExtensions). |
Le classi contenitore che implementano l'interfaccia IDataItemContainer possono specificare quale delle proprie proprietà identifica l'elemento di dati per le operazioni di associazione dati, ad esempio l'associazione tardiva con la classe DataBinder.
Nell'esempio di codice riportato di seguito viene illustrato come utilizzare l'interfaccia IDataItemContainer. SimpleSpreadsheetControl è un controllo che visualizza i dati in formato tabella, in modo analogo al controllo DataGrid o GridView. Contiene un insieme di oggetti SimpleSpreadsheetRow.
La classe SimpleSpreadsheetRow è una classe contenitore che implementa l'interfaccia IDataItemContainer. Sebbene in questo esempio la proprietà dell'elemento di dati sia stata denominata Data, è possibile implementare la proprietà DataItem per eseguire il mapping con qualsiasi proprietà o per restituire il valore di un metodo.
Imports System Imports System.Collections Imports System.Data.Common Imports System.Web.UI Imports System.Web.UI.WebControls Namespace Samples.AspNet.VB Public Class SimpleSpreadsheetControl Inherits CompositeDataBoundControl Protected table As New Table() Public Overridable ReadOnly Property Rows() As TableRowCollection Get Return table.Rows End Get End Property Protected Overrides Function CreateChildControls(ByVal dataSource As IEnumerable, ByVal dataBinding As Boolean) As Integer Dim count As Integer = 0 ' If dataSource is not Nothing, iterate through it and ' extract each element from it as a row, then ' create a SimpleSpreadsheetRow and add it to the ' rows collection. If Not (dataSource Is Nothing) Then Dim row As SimpleSpreadsheetRow Dim e As IEnumerator = dataSource.GetEnumerator() While e.MoveNext() Dim datarow As Object = e.Current row = New SimpleSpreadsheetRow(count, datarow) Me.Rows.Add(row) count += 1 End While Controls.Add(table) End If Return count End Function 'CreateChildControls End Class 'SimpleSpreadsheetControl Public Class SimpleSpreadsheetRow Inherits TableRow Implements IDataItemContainer Private dataObj As Object Private _itemIndex As Integer Public Sub New(ByVal itemIndex As Integer, ByVal o As Object) dataObj = o _itemIndex = itemIndex End Sub 'New Public Overridable ReadOnly Property Data() As Object Get Return dataObj End Get End Property ReadOnly Property DataItem() As Object Implements IDataItemContainer.DataItem Get Return Data End Get End Property ReadOnly Property DataItemIndex() As Integer Implements IDataItemContainer.DataItemIndex Get Return _itemIndex End Get End Property ReadOnly Property DisplayIndex() As Integer Implements IDataItemContainer.DisplayIndex Get Return _itemIndex End Get End Property Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter) If Not (Data Is Nothing) Then If TypeOf Data Is System.Data.Common.DbDataRecord Then Dim temp As DbDataRecord = CType(Data, DbDataRecord) Dim i As Integer While i < temp.FieldCount writer.Write("<TD>") writer.Write(temp.GetValue(i).ToString()) writer.Write("</TD>") i += 1 End While Else writer.Write(("<TD>" + Data.ToString() + "</TD>")) End If Else writer.Write("<TD>This is a test</TD>") End If End Sub 'RenderContents End Class 'SimpleSpreadsheetRow End Namespace
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 riportato di seguito viene illustrato come utilizzare i controlli SimpleSpreadsheetControl e AccessDataSource per visualizzare i dati di un database di Access.
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %> <%@ Page language="vb" %> <!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 - VB 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>
<%@ 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>
.NET Framework
Supportato in: 4, 3.5, 3.0, 2.0Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.