ListItem 类

定义

表示数据绑定列表控件中的数据项。Represents a data item in a data-bound list control. 此类不能被继承。This class cannot be inherited.

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
type ListItem = class
    interface IStateManager
    interface IParserAccessor
    interface IAttributeAccessor
Public NotInheritable Class ListItem
Implements IAttributeAccessor, IParserAccessor, IStateManager
继承
ListItem
属性
实现

示例

下面的示例演示如何在ListItem ListBox控件中使用控件。The following example illustrates the use of ListItem controls within a ListBox control.

备注

下面的代码示例使用单文件代码模型, 如果直接复制到代码隐藏文件中, 则可能无法正常工作。The following code samples use the single-file code model and may not work correctly if copied directly into a code-behind file. 必须将每个代码示例复制到具有 .aspx 扩展名的空文本文件中。Each code sample must be copied into an empty text file that has an .aspx extension. 有关 Web 窗体代码模型的详细信息, 请参阅ASP.NET Web 窗体页代码模型For more information on the Web Forms code model, see 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>

注解

控件表示数据绑定列表控件中的单个数据项, 如ListBoxRadioButtonList控件。 ListItemA ListItem control represents an individual data item within a data-bound list control, such as a ListBox or a RadioButtonList control.

可以通过多种方法指定为列表控件中的项显示的文本。There are several ways to specify the text displayed for an item in the list control. 最常见的方法是将文本放入内部 HTML 内容中。The most common method is by placing text in the inner HTML content. 内部 HTML 内容是ListItem控件的开始和结束标记之间的文本。The inner HTML content is the text between the opening and closing tags of the ListItem control. 你还可以使用Text属性来指定在项目的列表控件中显示的文本。You can also use the Text property to specify the text displayed in the list control for the item.

Value属性允许将值与列表控件中的项相关联, 以及控件中显示的文本。The Value property allows you to associate a value with the item in the list control, in addition to the text displayed in the control. 例如, 可以在列表控件中显示项的文本 (如"Item 1"), 并Value使用属性指定该项的值, 例如"$1.99"For example, you can display text for an item in the list control, such as "Item 1", and use the Value property to specify a value for that item, such as "$1.99".

可以设置内部 HTML 内容、 TextValue属性的任意组合。You can have any combination of the inner HTML content, Text, or Value properties set. ListItem控件生成的 HTML 输出依赖于设置的这三个属性的组合。The resulting HTML output for the ListItem control depends on the combination of these three properties that are set. 例如, 如果所有三个属性都设置如下:For example, if all three properties are set as follows:

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

内部 html 内容用于呈现的内部 html 内容, Value属性用于Value特性。The inner HTML content is used for rendered inner HTML content and the Value property is used for the Value attribute. 生成的 HTML 呈现输出为:The resulting HTML rendering output is:

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

下表列出了设置属性的组合, 以及用于呈现的内部 HTML 内容和Value属性的相应属性。The following table lists the combination of set properties and the corresponding property used for the rendered inner HTML content and Value attribute. 左侧的三列列出了集属性的组合。The three columns on the left list the combination of set properties. 右侧列表中的两列属性值用于相应的属性。The two columns on the right list which property value is used for the corresponding attribute.

内部 HTML 内容Inner HTML content Text 属性Text property Value 属性Value property 呈现的内部 HTML 内容Rendered Inner HTML content 呈现的值属性Rendered Value attribute
SetSet SetSet SetSet 内部 HTML 内容Inner HTML content Value 属性Value property
SetSet SetSet 未设置Not set 内部 HTML 内容Inner HTML content 内部 HTML 内容Inner HTML content
SetSet 未设置Not set SetSet 内部 HTML 内容Inner HTML content Value 属性Value property
SetSet 未设置Not set 未设置Not set 内部 HTML 内容Inner HTML content 内部 HTML 文本Inner HTML text
未设置Not set SetSet SetSet Text 属性Text property Value 属性Value property
未设置Not set SetSet 未设置Not set Text 属性Text property Text 属性Text property
未设置Not set 未设置Not set SetSet Value 属性Value property Value 属性Value property
未设置Not set 未设置Not set 未设置Not set 未设置Not set 未设置Not set

备注

Text因为和Value属性都具有一个空字符串的默认值, 所以, 列表控件中可以有空的列表项。Because the Text and Value properties each have a default value of an empty string, it is possible to have empty list items in the list control.

显示列表控件时, 其ListItem Selected属性设置为true的任何控件都突出显示在控件中。When a list control is displayed, any ListItem control with its Selected property set to true appears highlighted in the control.

控件提供了ListItem属性以允许您指定控件是已启用还是已禁用。 Enabled ListItemThe ListItem control provides the Enabled property to allow you to specify whether a ListItem control is enabled or disabled. 禁用ListItem的控件将变为灰色, 指示无法选择它。A ListItem control that is disabled is dimmed to indicate that it cannot be selected. 使用此属性可以禁用ListItem RadioButtonList控件或CheckBoxList控件中的控件。Use this property to disable a ListItem control in either a RadioButtonList control or a CheckBoxList control.

备注

不能使用此属性来禁用ListItem DropDownList控件或ListBox控件中的控件。You cannot use this property to disable a ListItem control in a DropDownList control or ListBox control.

有关实例ListItem的初始属性值的列表, ListItem请参见构造函数。For a list of initial property values for an instance of ListItem, see the ListItem constructor.

注意

此控件可用于显示用户输入, 其中可能包括恶意客户端脚本。This control can be used to display user input, which might include malicious client script. 在应用程序中显示可执行脚本、SQL 语句或其他代码之前, 请检查从该客户端发送的任何信息。Check any information that is sent from a client for executable script, SQL statements, or other code before displaying it in your application. 您可以使用验证控件在显示控件中的输入文本之前验证用户输入。You can use validation controls to verify user input before displaying the input text in a control. ASP.NET 提供输入请求验证功能来阻止用户输入中的脚本和 HTML。ASP.NET provides an input request validation feature to block script and HTML in user input. 有关详细信息, 请参阅保护标准控件, 如何:通过将 HTML 编码应用到字符串, 并在 ASP.NET 网页中验证用户输入来防范 Web 应用程序中的脚本攻击。For more information, see Securing Standard Controls, How to: Protect Against Script Exploits in a Web Application by Applying HTML Encoding to Strings, and Validating User Input in ASP.NET Web Pages.

构造函数

ListItem()

初始化 ListItem 类的新实例。Initializes a new instance of the ListItem class.

ListItem(String)

用指定的文本数据初始化 ListItem 类的新实例。Initializes a new instance of the ListItem class with the specified text data.

ListItem(String, String)

用指定的文本和值数据初始化 ListItem 类的新实例。Initializes a new instance of the ListItem class with the specified text and value data.

ListItem(String, String, Boolean)

用指定的文本、值和启用数据初始化 ListItem 类的新实例。Initializes a new instance of the ListItem class with the specified text, value, and enabled data.

属性

Attributes

获取类不直接支持的 ListItem 的特性名和值对的集合。Gets a collection of attribute name and value pairs for the ListItem that are not directly supported by the class.

Enabled

获取或设置一个值,该值指示是否启用列表项。Gets or sets a value indicating whether the list item is enabled.

Selected

获取或设置一个值,该值指示是否选定此项。Gets or sets a value indicating whether the item is selected.

Text

获取或设置列表控件中为 ListItem 所表示的项显示的文本。Gets or sets the text displayed in a list control for the item represented by the ListItem.

Value

获取或设置与 ListItem 关联的值。Gets or sets the value associated with the ListItem.

方法

Equals(Object)

确定指定的对象是否具有与当前列表项相同的值和文本。Determines whether the specified object has the same value and text as the current list item.

FromString(String)

从指定的文本创建 ListItemCreates a ListItem from the specified text.

GetHashCode()

用作特定类型的哈希函数,适合在哈希算法和数据结构(如哈希表)中使用。Serves as a hash function for a particular type, and is suitable for use in hashing algorithms and data structures like a hash table.

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.

显式接口实现

IAttributeAccessor.GetAttribute(String)

返回具有指定特性名称的列表项控件的特性值。Returns the attribute value of the list item control having the specified attribute name.

IAttributeAccessor.SetAttribute(String, String)

用指定名称和值设置列表项控件的特性。Sets an attribute of the list item control with the specified name and value.

IParserAccessor.AddParsedSubObject(Object)

使得 Text 属性可以保存为内部内容。Allows the Text property to be persisted as inner content.

IStateManager.IsTrackingViewState

有关此成员的说明,请参见 IsTrackingViewStateFor a description of this member, see IsTrackingViewState.

IStateManager.LoadViewState(Object)

有关此成员的说明,请参见 LoadViewState(Object)For a description of this member, see LoadViewState(Object).

IStateManager.SaveViewState()

有关此成员的说明,请参见 SaveViewState()For a description of this member, see SaveViewState().

IStateManager.TrackViewState()

有关此成员的说明,请参见 TrackViewState()For a description of this member, see TrackViewState().

适用于

另请参阅