Compartilhar via


DataListItemCollection Classe

Definição

Representa a coleção de objetos DataListItem no controle DataList. Essa classe não pode ser herdada.

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
Herança
DataListItemCollection
Implementações

Exemplos

O exemplo a seguir cria uma fonte de dados na forma de um DataView controle e o associa a um DataList controle declarado na marcação. Em seguida, ele exibe o conteúdo do objeto subjacente DataListItemCollection na página.

<%@ 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>
                            
                        <%# 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>
                    <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") %>' />
                            
                        <%# 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>
                    <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>

Comentários

A DataListItemCollection classe representa uma coleção de DataListItem objetos, que, por sua vez, representam os itens de dados em um DataList controle. Para recuperar DataListItem objetos programaticamente de um DataList controle, use um dos seguintes métodos:

  • Use o indexador para obter um único DataListItem objeto da coleção, usando a notação de matriz.

  • Use o CopyTo método para copiar o conteúdo da coleção para um System.Array objeto, que pode ser usado para obter itens da coleção.

  • Use o GetEnumerator método para criar uma System.Collections.IEnumerator interface, que pode ser usada para obter itens da coleção.

A Count propriedade especifica o número total de itens na coleção e é comumente usada para determinar o limite superior da coleção.

Construtores

DataListItemCollection(ArrayList)

Inicializa uma nova instância da classe DataListItemCollection.

Propriedades

Count

Obtém o número de objetos DataListItem na coleção.

IsReadOnly

Obtém um valor que indica se os objetos DataListItem na DataListItemCollection podem ser modificados.

IsSynchronized

Obtém um valor que indica se o acesso ao DataListItemCollection é sincronizado (thread-safe).

Item[Int32]

Obtém um objeto DataListItem no índice especificado na coleção.

SyncRoot

Obtém o objeto que pode ser usado para sincronizar o acesso à coleção DataListItemCollection.

Métodos

CopyTo(Array, Int32)

Copia todos os itens dessa coleção DataListItemCollection para o objeto Array especificado, começando no índice especificado no objeto Array.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetEnumerator()

Retorna uma interface IEnumerator que contém todos os objetos DataListItem na DataListItemCollection.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Métodos de Extensão

Cast<TResult>(IEnumerable)

Converte os elementos de um IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base em um tipo especificado.

AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.

Aplica-se a

Confira também