Freigeben über


ListItemCollection-Klasse

Eine Auflistung von ListItem-Objekten in einem Listensteuerelement. Diese Klasse kann nicht geerbt werden.

Namespace: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)

Syntax

'Declaration
Public NotInheritable Class ListItemCollection
    Implements IList, ICollection, IEnumerable, IStateManager
'Usage
Dim instance As ListItemCollection
public sealed class ListItemCollection : IList, ICollection, IEnumerable, 
    IStateManager
public ref class ListItemCollection sealed : IList, ICollection, IEnumerable, 
    IStateManager
public final class ListItemCollection implements IList, ICollection, 
    IEnumerable, IStateManager
public final class ListItemCollection implements IList, ICollection, 
    IEnumerable, IStateManager

Hinweise

Die ListItemCollection-Klasse stellt eine Auflistung von ListItem-Objekten dar. Die ListItem-Objekte stellen ihrerseits die Elemente dar, die in Listensteuerelementen angezeigt werden, z. B. ListBox. Verwenden Sie eine der folgenden Methoden, um programmgesteuert ListItem-Objekte aus einem Listensteuerelement abzurufen:

  • Rufen Sie mit dem Indexer unter Verwendung von Arraynotation ein einzelnes ListItem aus der Auflistung ab.

  • Kopieren Sie mit der CopyTo-Methode den Inhalt der Auflistung in ein System.Array-Objekt, mit dem anschließend Elemente aus der Auflistung abgerufen werden können.

  • Erstellen Sie mit der GetEnumerator-Methode ein implementiertes System.Collections.IEnumerator-Objekt, mit dem anschließend Elemente aus der Auflistung abgerufen werden können.

  • Mit foreach (C#) oder For Each (Visual Basic) kann die Auflistung durchlaufen werden.

Die Count-Eigenschaft gibt die Gesamtzahl der Elemente in der Auflistung an und wird i. A. zum Bestimmen der oberen Grenze der Auflistung verwendet. Mithilfe der Add-Methode und der Remove-Methode können Sie der Auflistung Elemente hinzufügen oder diese daraus entfernen.

Beispiel

Im folgenden Codebeispiel wird das Erstellen von ListItemCollection-Objekten, das Hinzufügen von Elementen zu den Auflistungen und das Entfernen von Elementen aus den Auflistungen veranschaulicht. In dem Beispiel wird die ListItemCollectionlistBoxData als Datenquelle für das ListBox-Steuerelement ListBox1 verwendet, und die ListItemCollectionddBoxData wird als Datenquelle für das DropDownList-Steuerelement DropDownList1 verwendet.

<%@ Page language="VB" AutoEventWireup="true" %>
<%@ Import Namespace="System.Data" %>

<HTML>
    <HEAD>
        <SCRIPT runat="server">
            Private Sub Page_Load(sender As Object, e As System.EventArgs) Handles MyBase.Load
                ' If this isn't the first time the page is loaded in this session,
                ' then don't recreate the DataTables.
                If Not IsPostBack Then
                    ' Create a new ListItemCollection.
                    Dim listBoxData As New ListItemCollection()
                    ' Add items to the collection.
                    listBoxData.Add(New ListItem("apples"))
                    listBoxData.Add(New ListItem("bananas"))
                    listBoxData.Add(New ListItem("cherries"))
                    listBoxData.Add("grapes")
                    listBoxData.Add("mangos")
                    listBoxData.Add("oranges")
                    ' Set the ListItemCollection as the data source for ListBox1.
                    ListBox1.DataSource = listBoxData
                    ListBox1.DataBind()
         
                    ' Create a new ListItemCollection.
                    Dim ddBoxData As New ListItemCollection()
                    ' For now, just bind the data to the DropDownList.
                    DropDownList1.DataSource = ddBoxData
                    DropDownList1.DataBind()
                End If
            End Sub 'Page_Load

            Private Sub moveButton1_Click(sender As Object, e As System.EventArgs) 
                'Set the SelectedIndex to -1 so no items are selected.            
                ' The new item will be set as the selected item when it is added.
                DropDownList1.SelectedIndex = - 1
                ' Add the selected item to DropDownList1.
                DropDownList1.Items.Add(ListBox1.SelectedItem)
                ' Delete the selected item from ListBox1.
                ListBox1.Items.Remove(ListBox1.SelectedItem)
            End Sub 'moveButton1_Click
   
   
            Private Sub moveButton2_Click(sender As Object, e As System.EventArgs)
                'Set the SelectedIndex to -1 so no items are selected.
                ' The new item will be set as the selected item when it is added.
                ListBox1.SelectedIndex = - 1
                ' Add the selected item to ListBox1.
                ListBox1.Items.Add(DropDownList1.SelectedItem)
                'Delete the selected item from DropDownList1.
                DropDownList1.Items.Remove(DropDownList1.SelectedItem)
            End Sub 'moveButton2_Click
        </SCRIPT>
    </HEAD>

    <BODY>
        <form runat="server">
            <table cellpadding="6" border="0">
                <tr>
                    <td rowspan="2" valign="top">
                        <asp:ListBox id="ListBox1" runat="server" 
                            SelectionMode="Single" Width="100px">
                        </asp:ListBox>
                    </td>

                    <td>
                        <asp:Button id="moveButton1" runat="server" Text="Move -->"
                            Width="100px" OnClick="moveButton1_Click"></asp:Button>
                    </td>

                    <td rowspan="2" valign="top">
                        <asp:DropDownList Runat="server" ID="DropDownList1"
                            Width="100px">
                        </asp:DropDownList>
                    </td>
                </tr>

                <tr>
                    <td>
                        <asp:Button ID="moveButton2" Runat="server" Text="<-- Move"
                            Width="100px" onClick="moveButton2_Click"></asp:Button>
                    </td>
                </tr>
            </table>

        </form>
    </BODY>
</HTML>
<%@ Page language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Data" %>

<HTML>
    <HEAD>
        <SCRIPT runat="server">
            private void Page_Load(object sender, System.EventArgs e)
            {
                // If this isn't the first time the page is loaded in this session,
                // then don't recreate the DataTables.
                if (!IsPostBack)
                {
                    // Create a new ListItemCollection.
                    ListItemCollection listBoxData = new ListItemCollection();
                    // Add items to the collection.
                    listBoxData.Add(new ListItem("apples"));
                    listBoxData.Add(new ListItem("bananas"));
                    listBoxData.Add(new ListItem("cherries"));
                    listBoxData.Add("grapes");
                    listBoxData.Add("mangos");
                    listBoxData.Add("oranges");
                    // Set the ListItemCollection as the data source for ListBox1.
                    ListBox1.DataSource = listBoxData;
                    ListBox1.DataBind();

                    // Create a new ListItemCollection.
                    ListItemCollection ddBoxData = new ListItemCollection();
                    // For now, just bind the data to the DropDownList.
                    DropDownList1.DataSource = ddBoxData;
                    DropDownList1.DataBind();
                }       
            }

            private void moveButton1_Click(object sender, System.EventArgs e)
            {
                //Set the SelectedIndex to -1 so no items are selected.
                // The new item will be set as the selected item when it is added.
                DropDownList1.SelectedIndex = -1;
                // Add the selected item to DropDownList1.
                DropDownList1.Items.Add(ListBox1.SelectedItem);
                // Delete the selected item from ListBox1.
                ListBox1.Items.Remove(ListBox1.SelectedItem);
            }

            private void moveButton2_Click(object sender, System.EventArgs e)
            {
                //Set the SelectedIndex to -1 so no items are selected.
                // The new item will be set as the selected item when it is added.
                ListBox1.SelectedIndex = -1;
                // Add the selected item to ListBox1.
                ListBox1.Items.Add(DropDownList1.SelectedItem);
                //Delete the selected item from DropDownList1.
                DropDownList1.Items.Remove(DropDownList1.SelectedItem);
            }
        </SCRIPT>
    </HEAD>

    <BODY>
        <form runat="server">
            <table cellpadding="6" border="0">
                <tr>
                    <td rowspan="2" valign="top">
                        <asp:ListBox id="ListBox1" runat="server" 
                            SelectionMode="Single" Width="100px">
                        </asp:ListBox>
                    </td>

                    <td>
                        <asp:Button id="moveButton1" runat="server" Text="Move -->"
                            Width="100px" OnClick="moveButton1_Click"></asp:Button>
                    </td>

                    <td rowspan="2" valign="top">
                        <asp:DropDownList Runat="server" ID="DropDownList1"
                            Width="100px">
                        </asp:DropDownList>
                    </td>
                </tr>

                <tr>
                    <td>
                        <asp:Button ID="moveButton2" Runat="server" Text="<-- Move"
                            Width="100px" onClick="moveButton2_Click"></asp:Button>
                    </td>
                </tr>
            </table>

        </form>
    </BODY>
</HTML>
<!-- This example demonstrates how to select multiple items from a DataList 
and add the selected items to a DataGrid. The example uses a For Each loop 
to iterate through the ListItem objects in the ListItemCollection of ListBox1. -->
<!-- This example demonstrates how to select multiple items from a DataList and add the 
selected items to a DataGrid. The example uses a foreach loop to iterate through 
the ListItem objects in the ListItemCollection of ListBox1. -->
<%@ Page language="VB" AutoEventWireup="true"%>
<%@ Import Namespace="System.Data" %>

<HTML>
    <HEAD>
        
        <SCRIPT runat="server">
            ' Global Variables.
            Private dv As DataView
            Private dt As New DataTable()

            Private Sub Page_Load(sender As Object, e As System.EventArgs)
                ' Set the number of rows displayed in the ListBox to be
                ' the number of items in the ListBoxCollection.
                ListBox1.Rows = ListBox1.Items.Count

                ' If the DataTable is already stored in the Web form's default
                ' HttpSessionState variable, then don't recreate the DataTable.
                If Session("data") Is Nothing Then
                    ' Add columns to the DataTable.
                    dt.Columns.Add(New DataColumn("Item"))
                    dt.Columns.Add(New DataColumn("Price"))
        
                    ' Store the DataTable in the Session variable so it can be 
                    ' accessed again later.
                    Session("data") = dt
                    
                    ' Use the table to create a DataView, because the DataGrid
                    ' can only bind to a data source that implements IEnumerable.
                    dv = New DataView(dt)
            
                    ' Set the DataView as the data source, and bind it to the DataGrid.
                    DataGrid1.DataSource = dv
                    DataGrid1.DataBind()
                End If
            End Sub

            Private Sub addButton_Click(sender As Object, e As System.EventArgs)
                ' Add the items selected in ListBox1 to DataGrid1.
                Dim item As ListItem
                For Each item In ListBox1.Items
                    If item.Selected Then
                        ' Add the item to the DataGrid.
                        ' First, get the DataTable from the Session variable.
                        dt = CType(Session("data"), DataTable)
            
                        If  Not (dt Is Nothing) Then
                            ' Create a new DataRow in the DataTable.
                            Dim dr As DataRow
                            dr = dt.NewRow()
                            ' Add the item to the new DataRow.
                            dr("Item") = item.Text
                            ' Add the item's value to the DataRow.
                            dr("Price") = item.Value
                            ' Add the DataRow to the DataTable.
                            dt.Rows.Add(dr)

                            ' Rebind the data to DataGrid1.
                            dv = new DataView(dt)
                            DataGrid1.DataSource = dv
                            DataGrid1.DataBind()
                        End If
                    End If
                Next item
            End Sub
        </SCRIPT>

    </HEAD>
    
    <BODY>
        <form runat="server">

            <h3> ListItemCollection Example </h3>

            <table cellpadding="6" border="0">
                <tr>
                    <td valign="top">
                        <asp:ListBox id="ListBox1" runat="server" SelectionMode="Multiple">
                            <asp:ListItem Value=".89">apples</asp:ListItem>
                            <asp:ListItem Value=".49">bananas</asp:ListItem>
                            <asp:ListItem Value="2.99">cherries</asp:ListItem>
                            <asp:ListItem Value="1.49">grapes</asp:ListItem>
                            <asp:ListItem Value="2.00">mangos</asp:ListItem>
                            <asp:ListItem Value="1.09">oranges</asp:ListItem>
                        </asp:ListBox>
                    </td>

                    <td valign="top">
                        <asp:Button id="addButton" runat="server" Text="Add -->"
                            Width="100px" OnClick="addButton_Click"></asp:Button>
                    </td>

                    <td valign="top">
                        <asp:DataGrid Runat="server" ID="DataGrid1" CellPadding="4">
                        </asp:DataGrid>
                    </td>
                </tr>
            </table>      

        </form>
    </body>
</HTML>
<%@ Page language="c#" AutoEventWireup="true"%>
<%@ Import Namespace="System.Data" %>

<HTML>
    <HEAD>
        
        <SCRIPT language="C#" runat="server">
            // Global Variables.
            private DataView dv;
            private DataTable dt = new DataTable();

            private void Page_Load(object sender, System.EventArgs e)
            {
                // Set the number of rows displayed in the ListBox to be
                // the number of items in the ListBoxCollection.
                ListBox1.Rows = ListBox1.Items.Count;

                // If the DataTable is already stored in the Web form's default
                // HttpSessionState variable, then don't recreate the DataTable.
                if (Session["data"] == null)
                {
                    // Add columns to the DataTable.
                    dt.Columns.Add(new DataColumn("Item"));
                    dt.Columns.Add(new DataColumn("Price"));
        
                    // Store the DataTable in the Session variable so it can 
                    // be accessed again later.
                    Session["data"] = dt;
                    
                    // Use the table to create a DataView, because the DataGrid
                    // can only bind to a data source that implements IEnumerable.
                    dv = new DataView(dt);
            
                    // Set the DataView as the data source, and bind it to the DataGrid.
                    DataGrid1.DataSource = dv;
                    DataGrid1.DataBind();
                }
            }

            private void addButton_Click(object sender, System.EventArgs e)
            {
                // Add the items selected in ListBox1 to DataGrid1.
                foreach (ListItem item in ListBox1.Items)
                {
                    if (item.Selected)
                    {
                        // Add the item to the DataGrid.
                        // First, get the DataTable from the Session variable.
                        dt = (DataTable)Session["data"];
            
                        if (dt != null)
                        { 
                            // Create a new DataRow in the DataTable.
                            DataRow dr = dt.NewRow();
                            // Add the item to the new DataRow.
                            dr["Item"] = item.Text;
                            // Add the item's value to the DataRow.
                            dr["Price"] = item.Value;
                            // Add the DataRow to the DataTable.
                            dt.Rows.Add(dr);

                            // Rebind the data to DataGrid1.
                            dv = new DataView(dt);
                            DataGrid1.DataSource = dv;
                            DataGrid1.DataBind();
                        }
                    }
                }
            }
        </SCRIPT>

    </HEAD>
    
    <BODY>
        <form runat="server">

            <h3> ListItemCollection Example </h3>

            <table cellpadding="6" border="0">
                <tr>
                    <td valign="top">
                        <asp:ListBox id="ListBox1" runat="server" SelectionMode="Multiple">
                            <asp:ListItem Value=".89">apples</asp:ListItem>
                            <asp:ListItem Value=".49">bananas</asp:ListItem>
                            <asp:ListItem Value="2.99">cherries</asp:ListItem>
                            <asp:ListItem Value="1.49">grapes</asp:ListItem>
                            <asp:ListItem Value="2.00">mangos</asp:ListItem>
                            <asp:ListItem Value="1.09">oranges</asp:ListItem>
                        </asp:ListBox>
                    </td>

                    <td valign="top">
                        <asp:Button id="addButton" runat="server" Text="Add -->"
                            Width="100px" OnClick="addButton_Click"></asp:Button>
                    </td>

                    <td valign="top">
                        <asp:DataGrid Runat="server" ID="DataGrid1" CellPadding="4">
                        </asp:DataGrid>
                    </td>
                </tr>
            </table>      

        </form>
    </body>
</HTML>

Vererbungshierarchie

System.Object
  System.Web.UI.WebControls.ListItemCollection

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

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 unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

ListItemCollection-Member
System.Web.UI.WebControls-Namespace
ListItem-Klasse
ListBox-Klasse
CopyTo
GetEnumerator
System.Collections.IEnumerator
Count
Add
Remove