ListControl.SelectedIndex 属性

定义

获取或设置列表中选定项的最低序号索引。

public:
 virtual property int SelectedIndex { int get(); void set(int value); };
[System.ComponentModel.Bindable(true)]
[System.ComponentModel.Browsable(false)]
public virtual int SelectedIndex { get; set; }
[System.ComponentModel.Bindable(true)]
[System.ComponentModel.Browsable(false)]
[System.Web.UI.Themeable(false)]
public virtual int SelectedIndex { get; set; }
[<System.ComponentModel.Bindable(true)>]
[<System.ComponentModel.Browsable(false)>]
member this.SelectedIndex : int with get, set
[<System.ComponentModel.Bindable(true)>]
[<System.ComponentModel.Browsable(false)>]
[<System.Web.UI.Themeable(false)>]
member this.SelectedIndex : int with get, set
Public Overridable Property SelectedIndex As Integer

属性值

列表中选定项的最低序号索引。 默认值为 -1,指示未选定任何内容。

属性

例外

在呈现列表时,该索引已被设置为小于 -1 或大于、等于列表中项数的值。

示例

以下示例演示如何使用 SelectedIndex 确定 中 CheckBoxList所选项的最低索引。

<%@ 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">
<html xmlns="http://www.w3.org/1999/xhtml" >
 <script language="c#" runat="server">
 
    ICollection CreateDataSource() {
       DataTable dt = new DataTable();
       DataRow dr;
 
       dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
       dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
       dt.Columns.Add(new DataColumn("DateTimeValue", typeof(DateTime)));
       dt.Columns.Add(new DataColumn("BoolValue", typeof(bool)));
       dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
 
       for (int i = 0; i < 9; i++) {
          dr = dt.NewRow();
 
          dr[0] = i;
          dr[1] = "Item " + i.ToString();
          dr[2] = DateTime.Now;
          dr[3] = (i % 2 != 0) ? true : false;
          dr[4] = 1.23 * (i+1);
 
          dt.Rows.Add(dr);
       }
 
       DataView dv = new DataView(dt);
       return dv;
    }
 
    void Page_Load(Object sender, EventArgs e) {
       if (!IsPostBack) {
          CheckBoxList1.DataSource = CreateDataSource();
          CheckBoxList1.DataTextField="StringValue";
          CheckBoxList1.DataValueField="CurrencyValue";
          CheckBoxList1.DataBind();
       }
    }
 
    void Index_Changed(Object sender, EventArgs e) {
 
       Label1.Text = "The index of the first item selected is: " + 
                     CheckBoxList1.SelectedIndex.ToString(); 
 
    }
 
 </script>
 
 <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
 
    <form id="form1" runat="server">
 
       <asp:CheckBoxList id="CheckBoxList1" 
            OnSelectedIndexChanged="Index_Changed"
            AutoPostBack="true"
            runat="server"/>
 
       <br />
 
       <asp:Label id="Label1" runat="server"/>
 
    </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">
<html xmlns="http://www.w3.org/1999/xhtml" >
 <script language="vb" runat="server">

    Function CreateDataSource() As ICollection
        Dim dt As New DataTable()
        Dim dr As DataRow
        
        dt.Columns.Add(New DataColumn("IntegerValue", GetType(Int32)))
        dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
        dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime)))
        dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))
        dt.Columns.Add(New DataColumn("CurrencyValue", GetType(Double)))
        
        Dim i As Integer
        For i = 0 To 8
            dr = dt.NewRow()
            
            dr(0) = i
            dr(1) = "Item " + i.ToString()
            dr(2) = DateTime.Now
            If (i Mod 2) <> 0 Then
                dr(3) = True
            Else
                dr(3) = False
            End If
            dr(4) = 1.23 *(i + 1)
            
            dt.Rows.Add(dr)
        Next i
        
        Dim dv As New DataView(dt)
        Return dv
    End Function

    Sub Page_Load(sender As Object, e As EventArgs)
        If Not IsPostBack Then
            CheckBoxList1.DataSource = CreateDataSource()
            CheckBoxList1.DataTextField = "StringValue"
            CheckBoxList1.DataValueField = "CurrencyValue"
            CheckBoxList1.DataBind()
        End If
    End Sub

    Sub Index_Changed(sender As Object, e As EventArgs)        
        Label1.Text = "The index of the first item selected is: " & _
            CheckBoxList1.SelectedIndex.ToString()
    End Sub
 
 </script>
 
 <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
 
    <form id="form1" runat="server">
 
       <asp:CheckBoxList id="CheckBoxList1" 
            OnSelectedIndexChanged="Index_Changed"
            AutoPostBack="true"
            runat="server"/>
 
       <br />
 
       <asp:Label id="Label1" runat="server"/>
 
    </form>
 
 </body>
 </html>

注解

如果列表控件只允许一个选择,请使用此属性来确定列表中当前选定项的索引。 如果列表控件支持多个选择,请使用此属性来确定所选项的最低索引。

属性的值 SelectedIndex 不是在回发时专门保存的。 它是使用 属性在回发时还原的 SelectedValue 。 例如,如果 SelectedValue 属性为 4,则回发时, SelectedIndex 属性设置为属性Value为 4 的 ListItem 对象的索引。 如果多个 ListItem 对象的属性为 Value 4,则选择集合中的 Items 第一项。

无法通过主题或样式表主题设置此属性。 有关详细信息,请参阅 ThemeableAttributeASP.NET 主题和皮肤

适用于

另请参阅