ListItemCollection Class
Assembly: System.Web (in system.web.dll)
'Declaration Public NotInheritable Class ListItemCollection Implements IList, ICollection, IEnumerable, IStateManager 'Usage Dim instance As ListItemCollection
public final class ListItemCollection implements IList, ICollection, IEnumerable, IStateManager
public final class ListItemCollection implements IList, ICollection, IEnumerable, IStateManager
Not applicable.
The ListItemCollection class represents a collection of ListItem objects. The ListItem objects, in turn, represent the items displayed in list controls, such as the ListBox. To programmatically retrieve ListItem objects from a list control, use one of following methods:
-
Use the indexer to get a single ListItem from the collection, using array notation.
-
Use the CopyTo method to copy the contents of the collection to a System.Array object, which can then be used to get items from the collection.
-
Use the GetEnumerator method to create a System.Collections.IEnumerator implemented object, which can then be used to get items from the collection.
-
Use foreach (C#) or For Each (Visual Basic) to iterate through the collection.
The Count property specifies the total number of items in the collection, and is commonly used to determine the upper bound of the collection. You can add and remove items from the collection by using the Add and Remove methods.
The following code example demonstrates creating ListItemCollection objects, adding items to the collections, and removing items from the collections. In the example, the ListItemCollection named listBoxData is used as the data source for a ListBox control called ListBox1, and the ListItemCollection called ddBoxData is used as the data source for a DropDownList control called DropDownList1.
<%@ Page language="VB" AutoEventWireup="true" %> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <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> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>ASP.NET Example</title> </head> <body> <form id="form1" 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. -->
<%@ Page language="VB" AutoEventWireup="true"%> <%@ Import Namespace="System.Data" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <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> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title> ListItemCollection Example </title> </head> <body> <form id="form1" 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>