DataListItemCollection 類別

定義

表示 DataListItem 控制項中 DataList 物件的集合。Represents the collection of DataListItem objects in the DataList control. 此類別無法獲得繼承。This class cannot be inherited.

public ref class DataListItemCollection sealed : System::Collections::ICollection
public sealed class DataListItemCollection : System.Collections.ICollection
type DataListItemCollection = class
    interface ICollection
    interface IEnumerable
Public NotInheritable Class DataListItemCollection
Implements ICollection
繼承
DataListItemCollection
實作

範例

下列範例會以控制項的形式建立資料來源 DataView ,並將其系結至 DataList 標記中宣告的控制項。The following example creates a data source in the form of a DataView control and binds it to a DataList control declared in markup. 然後,它會在頁面上顯示基礎物件的內容 DataListItemCollectionIt then displays the contents of the underlying DataListItemCollection object on the page.

<%@ Import Namespace = "System.Data"  %>
<%@ Page language="c#" AutoEventWireup="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">    
// The following example creates a DataSource as a DataView.
// The DataView is bound to a DataList that is displayed using an
// ItemTemplate. When the page is first loaded, the program uses the 
// CopyTo method to copy the entire data source to an Array and then 
// displays that data.

ICollection CreateDataSource()
{
    DataTable myDataTable = new DataTable();
    DataRow myDataRow;

    myDataTable.Columns.Add(new DataColumn("EmployeeName", typeof(string)));
    myDataTable.Columns.Add(new DataColumn("EmployeeID", typeof(long)));
    for (int i = 0; i < 3; i++)
    {
        myDataRow = myDataTable.NewRow();
        myDataRow[0] = "somename" + i.ToString();
        myDataRow[1] = (i+1000);
        myDataTable.Rows.Add(myDataRow);
    }
    DataView dataView = new DataView(myDataTable);
    return dataView;
}

// <Snippet2>
void Page_Load(Object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // Bind the DataView to the DataSource.
        myDataList.DataSource = CreateDataSource();
        myDataList.DataBind();
        // Create a Array to hold the DataSource.
        System.Array myArray = Array.CreateInstance(typeof(DataListItem),
            myDataList.Items.Count);
        // Copy the DataSource to an Array.
        myDataList.Items.CopyTo(myArray,0);
        PrintValues(myArray);
    }
}

// Prints each element in the Array onto the label lblAllItems1.
public void PrintValues(Array myArr)
{
    DataListItem currentItem;
    System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
    while (myEnumerator.MoveNext())
    {
        currentItem = (DataListItem)myEnumerator.Current;
        lblAllItems1.Text += "<br /><br />" + 
            ((Label)(currentItem.Controls[1])).Text;
    }
}

// Event handler method for show button.
void show_Click(Object sender,EventArgs e)
{
    // Get the underlying DataListItemCollection from the DataList object.
    DataListItemCollection myDataListItemCollection = myDataList.Items;
    // Display the read-only properties.
    Response.Write("<b>The Total number of items are " + 
        myDataListItemCollection.Count + "</b>");
    Response.Write("<br /><b>The ReadOnly property of the " + 
        "DataListItemCollection is always" + 
        myDataListItemCollection.IsReadOnly + "</b>");
    Response.Write("<br /><b>The IsSynchronized property of the " +
        "DataListItemCollection is always " +
        myDataListItemCollection.IsSynchronized + "</b>");
    myDataListItemCollection = null;
}
// </Snippet2>

// <Snippet5>
void allItems_Click(Object sender,EventArgs e)
{
    IEnumerator dataListEnumerator;
    DataListItem currentItem;
    lblAllItems.Text = "";
    // Get an enumerator to traverse the DataListItemCollection.
    dataListEnumerator = myDataList.Items.GetEnumerator();
    while(dataListEnumerator.MoveNext())
    {
        currentItem = (DataListItem)dataListEnumerator.Current;
        // Display the current DataListItem onto the label.
        lblAllItems.Text += ((Label)(currentItem.Controls[1])).Text + " ";
    }
}
// </Snippet5>

// <Snippet6>
void itemSelected(Object sender,EventArgs e)
{
    // Get the underlying DataListItemCollection from the DataList object.
    DataListItemCollection myDataListItemCollection = myDataList.Items;
    // Get the index of the selected radio button in the RadioButtonList.
    int index = Convert.ToInt16(listItemNo.SelectedItem.Value);
    // Get the DataListItem corresponding to index from DataList.
    // SyncRoot is used to make access to the DataListItemCollection 
    // in a thread-safe manner It returns the object that invoked it. 
    DataListItem currentItem = 
        ((DataListItemCollection)(myDataListItemCollection.SyncRoot))[index];
    // Display the selected DataListItem onto a label.
    lblDisplay.Text = "<b>DataListItem" + index + " is : "
        + ((Label)(currentItem.Controls[1])).Text;
    currentItem = null;
    myDataListItemCollection = null;
}
// </Snippet6>

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>
        DataListItemCollection Example
    </title>
</head>
<body>
<form runat="server" id="Form1">
    <h3>
        DataListItemCollection Example
    </h3>
    <table>
        <tr>
            <td>
                <asp:datalist id="myDataList" runat="server" Font-Size="8pt" 
                    Font-Names="Verdana" BorderColor="black" CellSpacing="5"
                    CellPadding="10" GridLines="Horizontal">
                    <HeaderStyle BackColor="#aaaadd"></HeaderStyle>
                    <HeaderTemplate>
                        EmployeeName EmployeeID
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label id="label1" runat="server"
                            Text='<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>'>
                        </asp:Label>
                        &nbsp;&nbsp;&nbsp;&nbsp;
                        <%# DataBinder.Eval(Container.DataItem, "EmployeeID")%>
                    </ItemTemplate>
                </asp:datalist>
            </td>
            <td>
                <asp:label id="lblAllItems1" 
                    Text="The following items <br /> are copied to the array: " 
                    Runat="server" ForeColor="blue" Font-Bold="true" 
                    AssociatedControlID="listItemNo">
                    The following items <br /> are copied to the array:
                </asp:label>
            </td>
            <td>
                &nbsp;&nbsp;&nbsp; <b>Show Items:</b>
                <asp:RadioButtonList ID="listItemNo" 
                    OnSelectedIndexChanged="itemSelected" AutoPostBack="true" 
                    Runat="server">
                    <asp:ListItem Value="0" Text="0"></asp:ListItem>
                    <asp:ListItem Value="1" Text="1"></asp:ListItem>
                    <asp:ListItem Value="2" Text="2"></asp:ListItem>
                </asp:RadioButtonList>
            </td>
            <td>
                <asp:Label ID="lblDisplay" Runat="server" />
            </td>
        </tr>
    </table>
    <p>
        <asp:button id="show" onclick="show_Click" Runat="server" 
             Font-Bold="True" Text="DataList Information" />
        <asp:button id="allitems" onclick="allItems_Click" Runat="server" 
            Font-Bold="True" Text="Show All DataListItems" />
    </p>
    <p>
        <b>All DataList items will be shown here:</b>
        <asp:label id="lblAllItems" Runat="server" ForeColor="blue" />
    </p>
</form>
</body>
</html>
<%@ Import Namespace = "System.Data"  %>
<%@ Page language="VB" AutoEventWireup="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">    
' The following example creates a DataSource as a DataView.
' The DataView is bound to a DataList that is displayed using an
' ItemTemplate. When the page is first loaded, the program uses the 
' CopyTo method to copy the entire data source to an Array and then 
' displays that data.

Function CreateDataSource() As ICollection 
    Dim myDataTable As DataTable = New DataTable()
    Dim myDataRow As DataRow 
    Dim i As Integer

    myDataTable.Columns.Add(New DataColumn("EmployeeName", GetType(String)))
    myDataTable.Columns.Add(New DataColumn("EmployeeID", GetType(Integer)))
    For i = 0 To 2
        myDataRow = myDataTable.NewRow()
        myDataRow(0) = "somename" + i.ToString()
        myDataRow(1) = i + 1000
        myDataTable.Rows.Add(myDataRow)
    Next 
    CreateDataSource = new DataView(myDataTable)
End Function

' <Snippet2>
Sub Page_Load(sender As object, e As EventArgs)
    If (Not IsPostBack)
        ' Bind the DataView to the DataSource.
        myDataList.DataSource = CreateDataSource()
        myDataList.DataBind()
        ' Create a Array to hold the DataSource.
        Dim myArray As System.Array = Array.CreateInstance(GetType(DataListItem), _
            myDataList.Items.Count)
        ' Copy the DataSource to an Array.
        myDataList.Items.CopyTo(myArray, 0)
        PrintValues(myArray)
    End If
End sub

' Prints each element in the Array onto the label lblAllItems1.
Public Sub PrintValues(myArr As Array)
    Dim currentItem As DataListItem 
    Dim myEnumerator As System.Collections.IEnumerator = myArr.GetEnumerator()
    While (myEnumerator.MoveNext())
        currentItem = CType(myEnumerator.Current,DataListItem)
        lblAllItems1.Text = lblAllItems1.Text & "<br /><br />" & _
            CType(currentItem.Controls(1),Label).Text
    End While
End Sub

    ' Event handler method for show button.
Sub show_Click(sender as Object, e As EventArgs)
    ' Get the underlying DataListItemCollection from the DataList object.
    Dim myDataListItemCollection As DataListItemCollection = myDataList.Items
    ' Display the read-only properties.
    Response.Write("<b>The Total number of items are " & _
        myDataListItemCollection.Count & "</b>")
        Response.Write("<br /><b>The ReadOnly property of the " & _
            "DataListItemCollection is always " & _
            myDataListItemCollection.IsReadOnly & "</b>")
        Response.Write("<br /><b>The IsSynchronized property of the " & _
            "DataListItemCollection is always " _
            & myDataListItemCollection.IsSynchronized & "</b>")
    myDataListItemCollection = Nothing
End Sub
    ' </Snippet2>

' <Snippet5>
Sub AllItems_Click(sender As Object, e As EventArgs)
    Dim dataListEnumerator As IEnumerator
    Dim currentItem As DataListItem 
    lblAllItems.Text = ""
    ' Get an enumerator to traverse the DataListItemCollection.
    dataListEnumerator = myDataList.Items.GetEnumerator()
    while(dataListEnumerator.MoveNext())
        currentItem = CType(dataListEnumerator.Current,DataListItem)
        ' Display the current DataListItem onto the label.
        lblAllItems.Text = lblAllItems.Text & CType((currentItem.Controls(1)), _
        Label).Text & "  "
    End While
End Sub
' </Snippet5>

' <Snippet6>
Sub ItemSelected(sender As object, e As EventArgs)
    ' Get the underlying DataListItemCollection from the DataList object.
    Dim myDataListItemCollection As DataListItemCollection  = myDataList.Items
    ' Get the index of the selected radio button in the RadioButtonList.
    Dim index As Integer = Convert.ToInt16(listItemNo.SelectedItem.Value)
    ' Get the DataListItem corresponding to index from DataList.
    ' SyncRoot is used to make access to the DataListItemCollection 
    ' in a thread-safe manner It returns the object that invoked it. 
    Dim currentItem As DataListItem = _ 
        CType(myDataListItemCollection.SyncRoot,DataListItemCollection)(index)
    ' Display the selected DataListItem onto a label.
    lblDisplay.Text = "<b>DataListItem" & index & " is: " _
        & CType(currentItem.Controls(1),Label).Text
    currentItem = Nothing
    myDataListItemCollection = Nothing
End Sub
    ' </Snippet6>

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>
        DataListItemCollection Example
    </title>
</head>
<body>
<form runat="server" id="Form1">
    <h3>
        DataListItemCollection Example
    </h3>
    <table>
        <tr>
            <td>
                <asp:datalist id="myDataList" runat="server" Font-Size="8pt" 
                    Font-Names="Verdana" BorderColor="black" CellSpacing="5"
                    CellPadding="10" GridLines="Horizontal">
                    <HeaderStyle BackColor="#aaaadd"></HeaderStyle>
                    <HeaderTemplate>
                        EmployeeName EmployeeID
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:Label id="label1"  runat="server"
                            Text='<%# DataBinder.Eval(Container.DataItem, "EmployeeName") %>' />
                        &nbsp;&nbsp;&nbsp;&nbsp;
                        <%# DataBinder.Eval(Container.DataItem, "EmployeeID")%>
                    </ItemTemplate>
                </asp:datalist>
            </td>
            <td>
                <asp:label id="lblAllItems1" 
                    Text="The following items <br /> are copied to the array: " 
                    Runat="server" ForeColor="blue" Font-Bold="true" 
                    AssociatedControlID="listItemNo">
                    The following items <br /> are copied to the array:
                </asp:label>
            </td>
            <td>
                &nbsp;&nbsp;&nbsp; <b>Show Items:</b>
                <asp:RadioButtonList ID="listItemNo" 
                    OnSelectedIndexChanged="itemSelected" AutoPostBack="true" 
                    Runat="server">
                    <asp:ListItem Value="0" Text="0"></asp:ListItem>
                    <asp:ListItem Value="1" Text="1"></asp:ListItem>
                    <asp:ListItem Value="2" Text="2"></asp:ListItem>
                </asp:RadioButtonList>
            </td>
            <td>
                <asp:Label ID="lblDisplay" Runat="server" />
            </td>
        </tr>
    </table>
    <p>
        <asp:button id="show" onclick="show_Click" Runat="server" 
            Font-Bold="True" Text="DataList Information" />
        <asp:button id="allitems" onclick="allItems_Click" Runat="server" 
            Font-Bold="True" Text="Show All DataListItems" />
    </p>
    <p>
        <b>All DataList items will be shown here:</b>
        <asp:label id="lblAllItems" Runat="server" ForeColor="blue" />
    </p>
</form>
</body>
</html>

備註

DataListItemCollection類別表示物件的集合 DataListItem ,而這些物件會接著代表控制項中的資料項目 DataListThe DataListItemCollection class represents a collection of DataListItem objects, which in turn represent the data items in a DataList control. 若要以程式設計方式 DataListItem 從控制項取出物件 DataList ,請使用下列其中一種方法:To programmatically retrieve DataListItem objects from a DataList control, use one of the following methods:

Count屬性會指定集合中的專案總數,通常用來判斷集合的上限。The Count property specifies the total number of items in the collection and is commonly used to determine the upper bound of the collection.

建構函式

DataListItemCollection(ArrayList)

初始化 DataListItemCollection 類別的新執行個體。Initializes a new instance of the DataListItemCollection class.

屬性

Count

取得集合中 DataListItem 物件的數目。Gets the number of DataListItem objects in the collection.

IsReadOnly

取得值,指出是否可以修改 DataListItem 中的DataListItemCollection 物件。Gets a value that indicates whether the DataListItem objects in the DataListItemCollection can be modified.

IsSynchronized

取得值,該值指出是否同步存取 DataListItemCollection (安全執行緒)。Gets a value indicating whether access to the DataListItemCollection is synchronized (thread-safe).

Item[Int32]

取得位於集合中指定索引的 DataListItem 物件。Gets a DataListItem object at the specified index in the collection.

SyncRoot

取得可用來同步存取 DataListItemCollection 集合的物件。Gets the object that can be used to synchronize access to the DataListItemCollection collection.

方法

CopyTo(Array, Int32)

DataListItemCollection 物件中指定的索引開始,將全部項目自這個 Array 集合複製到指定的 Array 物件。Copies all the items from this DataListItemCollection collection to the specified Array object, starting at the specified index in the Array object.

Equals(Object)

判斷指定的物件是否等於目前的物件。Determines whether the specified object is equal to the current object.

(繼承來源 Object)
GetEnumerator()

傳回 IEnumerator 介面,包含 DataListItem 中所有的 DataListItemCollection 物件。Returns a IEnumerator interface that contains all DataListItem objects in the DataListItemCollection.

GetHashCode()

做為預設雜湊函式。Serves as the default hash function.

(繼承來源 Object)
GetType()

取得目前執行個體的 TypeGets the Type of the current instance.

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。Creates a shallow copy of the current Object.

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。Returns a string that represents the current object.

(繼承來源 Object)

擴充方法

Cast<TResult>(IEnumerable)

IEnumerable 的項目轉換成指定的型別。Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

根據指定的型別來篩選 IEnumerable 的項目。Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

啟用查詢的平行化作業。Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerable 轉換成 IQueryableConverts an IEnumerable to an IQueryable.

適用於

另請參閱