ListItem Classe

Definição

Representa um elemento de dados num controlo de lista limitado por dados. Esta classe não pode ser herdada.

public ref class ListItem sealed : System::Web::UI::IAttributeAccessor, System::Web::UI::IParserAccessor, System::Web::UI::IStateManager
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public sealed class ListItem : System.Web.UI.IAttributeAccessor, System.Web.UI.IParserAccessor, System.Web.UI.IStateManager
[<System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))>]
type ListItem = class
    interface IStateManager
    interface IParserAccessor
    interface IAttributeAccessor
Public NotInheritable Class ListItem
Implements IAttributeAccessor, IParserAccessor, IStateManager
Herança
ListItem
Atributos
Implementações

Exemplos

O exemplo seguinte ilustra a utilização de ListItem controlos dentro de um ListBox controlo.

Note

Os exemplos de código seguintes utilizam o modelo de código de ficheiro único e podem não funcionar corretamente se forem copiados diretamente para um ficheiro code-behind. Cada exemplo de código deve ser copiado para um ficheiro de texto vazio que tenha uma extensão .aspx. Para mais informações sobre o modelo de código Web Forms, consulte ASP.NET Web Forms Page Code Model.

<%@ 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">
<html xmlns="http://www.w3.org/1999/xhtml" >
 <head>
    <title>ListBox Example</title>
<script language="C#" runat="server">
 
         void SubmitBtn_Click(Object Sender, EventArgs e) {
             if (ListBox1.SelectedIndex > -1) {
                 Label1.Text="You chose: " + ListBox1.SelectedItem.Text;
                 Label1.Text+="<br /> with value: " + ListBox1.SelectedItem.Value;
             }
         }
 
     </script>
 
 </head>
 <body>
 
     <h3>ListBox Example</h3>
     <br />
 
     <form id="form1" runat="server">
 
         <asp:ListBox id="ListBox1" Width="100px" runat="server">
             <asp:ListItem>Item 1</asp:ListItem>
             <asp:ListItem>Item 2</asp:ListItem>
             <asp:ListItem>Item 3</asp:ListItem>
             <asp:ListItem Value="Value 4">Item 4</asp:ListItem>
             <asp:ListItem Text="Item 5" Value="Value 5" Selected="True"/>
             <asp:ListItem>Item 6</asp:ListItem>
         </asp:ListBox>
 
         <asp:button Text="Submit" OnClick="SubmitBtn_Click" runat="server" />
         
         <br />
         
         <asp:Label id="Label1" font-names="Verdana" font-size="10pt" runat="server"/>
         
     </form>
 
 </body>
 </html>
<%@ 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">
<html xmlns="http://www.w3.org/1999/xhtml" >
 <head>
    <title>ListBox Example</title>
<script language="VB" runat="server">
 
         Sub SubmitBtn_Click(Sender As Object, e As EventArgs)
             If ListBox1.SelectedIndex > -1 Then
                 Label1.Text = "You chose: " & ListBox1.SelectedItem.Text
                 Label1.Text &= "<br /> with value: " & ListBox1.SelectedItem.Value
             End If
         End Sub
 
     </script>
 
 </head>
 <body>
 
     <h3>ListBox Example</h3>
     <br />
 
     <form id="form1" runat="server">
 
         <asp:ListBox id="ListBox1" Width="100px" runat="server">
             <asp:ListItem>Item 1</asp:ListItem>
             <asp:ListItem>Item 2</asp:ListItem>
             <asp:ListItem>Item 3</asp:ListItem>
             <asp:ListItem Value="Value 4">Item 4</asp:ListItem>
             <asp:ListItem Text="Item 5" Value="Value 5" Selected="True"/>
             <asp:ListItem>Item 6</asp:ListItem>
         </asp:ListBox>
 
         <asp:button Text="Submit" OnClick="SubmitBtn_Click" runat="server" />
         
         <br />
         
         <asp:Label id="Label1" font-names="Verdana" font-size="10pt" runat="server"/>
         
     </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 foreach 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 For Each loop 
to iterate through the ListItem objects in the ListItemCollection of ListBox1. -->
<%@ Page language="c#" 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 language="C#" runat="server">
            // Global Variables.
            private DataView dv;
            private DataTable dt = new DataTable();

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

                // 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)
            {
// <Snippet5>
                // 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);
// </Snippet5>

                            // Rebind the data to DataGrid1.
                            dv = new DataView(dt);
                            DataGrid1.DataSource = dv;
                            DataGrid1.DataBind();
                        }
                    }
                }
            }
        </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>
<%@ 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)
' <Snippet4>
                ' Set the number of rows displayed in the ListBox to be
                ' the number of items in the ListBoxCollection.
                ListBox1.Rows = ListBox1.Items.Count
' </Snippet4>

                ' 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)
' <Snippet5>
                ' 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)
' </Snippet5>

                            ' 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>

Observações

Um ListItem controlo representa um elemento de dados individual dentro de um controlo de lista encadernado por dados, como um ListBox ou um RadioButtonList controlo.

Existem várias formas de especificar o texto apresentado para um item no controlo da lista. O método mais comum é colocar texto no conteúdo interno do HTML. O conteúdo interno de HTML é o texto entre as etiquetas de abertura e fecho do ListItem controlo. Também pode usar a Text propriedade para especificar o texto exibido no controlo da lista para o item.

A Value propriedade permite-lhe associar um valor ao item no controlo da lista, além do texto apresentado no controlo. Por exemplo, pode mostrar texto para um item no controlo da lista, como "Item 1", e usar a Value propriedade para especificar um valor para esse item, como "$1.99".

Podes ter qualquer combinação do conteúdo HTML interno, Text, ou Value propriedades definidas. A saída HTML resultante para o ListItem controlo depende da combinação destas três propriedades que são definidas. Por exemplo, se as três propriedades forem definidas da seguinte forma:

<asp:ListItem Value="Value 1" Text="Item 1">Inner 1</asp:ListItem>

O conteúdo HTML interno é usado para conteúdo HTML interno renderizado e a Value propriedade é usada para o Value atributo. A saída resultante da renderização HTML é:

<option value="Value 1">Inner 1</option>

A tabela seguinte lista a combinação das propriedades do conjunto e a propriedade correspondente usada para o conteúdo interno HTML renderizado e Value o atributo. As três colunas à esquerda listam a combinação das propriedades do conjunto. As duas colunas à direita indicam qual valor de propriedade é usado para o atributo correspondente.

Conteúdo HTML interno Propriedade do texto Propriedade de valor Conteúdo HTML Interno Renderizado Atributo Valor Renderizado
Definir Definir Definir Conteúdo HTML interno Propriedade de valor
Definir Definir Não definido Conteúdo HTML interno Conteúdo HTML interno
Definir Não definido Definir Conteúdo HTML interno Propriedade de valor
Definir Não definido Não definido Conteúdo HTML interno Texto HTML interno
Não definido Definir Definir Propriedade do texto Propriedade de valor
Não definido Definir Não definido Propriedade do texto Propriedade do texto
Não definido Não definido Definir Propriedade de valor Propriedade de valor
Não definido Não definido Não definido Não definido Não definido

Note

Como as Text propriedades e Value têm cada uma um valor padrão de uma cadeia vazia, é possível ter elementos de lista vazios no controlo da lista.

Quando um controlo de lista é exibido, qualquer ListItem controlo com a Selected sua propriedade definida para true aparece destacado no controlo.

O ListItem controlo fornece a Enabled propriedade que permite especificar se um ListItem controlo está ativado ou desativado. Um ListItem controlo desativado é atenuado para indicar que não pode ser selecionado. Use esta propriedade para desativar um ListItem controlo, seja num RadioButtonList controlo ou num CheckBoxList controlo.

Note

Não pode usar esta propriedade para desativar um ListItem controlo dentro de um DropDownList controlo ou ListBox controlo.

Para obter uma lista de valores das propriedades iniciais de uma instância de ListItem, consulte o construtor ListItem.

Caution

Este controlo pode ser usado para mostrar a entrada do utilizador, que pode incluir scripts de cliente maliciosos. Verifique qualquer informação enviada por um cliente para scripts executáveis, instruções SQL ou outro código antes de a exibir na sua aplicação. Pode usar controlos de validação para verificar a entrada do utilizador antes de mostrar o texto de entrada num controlo. ASP.NET fornece uma funcionalidade de validação de pedidos de entrada para bloquear scripts e HTML na entrada do utilizador. Para mais informações, veja Securing Standard Controls, How to: Protect Against Scripts Exploits numa Aplicação de Scripts Aplicando Codificação HTML a Strings, e Validating User Input in ASP.NET Web Pages.

Construtores

Name Description
ListItem()

Inicializa uma nova instância da ListItem classe.

ListItem(String, String, Boolean)

Inicializa uma nova instância da ListItem classe com o texto, valor e dados ativados especificados.

ListItem(String, String)

Inicializa uma nova instância da ListItem classe com o texto especificado e os dados de valor.

ListItem(String)

Inicializa uma nova instância da ListItem classe com os dados de texto especificados.

Propriedades

Name Description
Attributes

Obtém uma coleção de pares de nomes de atributos e valores para os ListItem que não são diretamente suportados pela classe.

Enabled

Recebe ou define um valor que indica se o item da lista está ativado.

Selected

Recebe ou define um valor que indica se o item está selecionado.

Text

Obtém ou define o texto exibido num controlo de lista para o item representado pelo ListItem.

Value

Obtém ou define o valor associado ao ListItem.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado tem o mesmo valor e texto que o item da lista atual.

FromString(String)

Cria um ListItem a partir do texto especificado.

GetHashCode()

Serve como função de hash para um determinado tipo e é adequada para uso em algoritmos de hash e estruturas de dados como uma tabela de hash.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

Implementações de Interface Explícita

Name Description
IAttributeAccessor.GetAttribute(String)

Devolve o valor do atributo do controlo do item da lista com o nome do atributo especificado.

IAttributeAccessor.SetAttribute(String, String)

Define um atributo do controlo do item da lista com o nome e valor especificados.

IParserAccessor.AddParsedSubObject(Object)

Permite que a Text propriedade persista como conteúdo interno.

IStateManager.IsTrackingViewState

Para uma descrição deste elemento, veja IsTrackingViewState.

IStateManager.LoadViewState(Object)

Para uma descrição deste elemento, veja LoadViewState(Object).

IStateManager.SaveViewState()

Para uma descrição deste elemento, veja SaveViewState().

IStateManager.TrackViewState()

Para uma descrição deste elemento, veja TrackViewState().

Aplica-se a

Ver também