IDataItemContainer インターフェイス
アセンブリ: System.Web (system.web.dll 内)


IDataItemContainer インターフェイスを実装するコンテナ クラスは、DataBinder クラスによる遅延バインディングなどのデータ バインディング操作に対して、データ項目を識別するプロパティを指定できます。

IDataItemContainer インターフェイスを使用する方法を次のコード例に示します。SimpleSpreadsheetControl は、DataGrid コントロールまたは GridView コントロールと同様、表形式のデータを表示するコントロールです。このコントロールは SimpleSpreadsheetRow オブジェクトのセットを格納します。
SimpleSpreadsheetRow クラスは、IDataItemContainer インターフェイスを実装するコンテナ クラスです。この例では、データ項目プロパティに直感的な Data という名前が付いていますが、DataItem プロパティを実装して、任意のプロパティやメソッドの戻り値を割り当てることができます。
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>"); } } }
SimpleSpreadsheetControl と AccessDataSource コントロールを使用して、Access データベースのデータを表示する方法を次のコード例に示します。
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %> <%@ Page language="vb" %> <html> <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#" %> <html> <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>


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IDataItemContainer プロパティ

名前 | 説明 | |
---|---|---|
![]() | DataItem | 実装時、データ バインディング操作を容易にするために使用される object を取得します。 |
![]() | DataItemIndex | 実装時、コントロールにバインドされているデータ項目のインデックスを取得します。 |
![]() | DisplayIndex | 実装時、コントロールに表示されるデータ項目の位置を取得します。 |

IDataItemContainer メンバ
- IDataItemContainerのページへのリンク