Sdílet prostřednictvím


Unterschiede zwischen der SelectionList-Klasse und der List-Klasse

Aktualisiert: November 2007

Obwohl das SelectionList-Steuerelement und das List-Steuerelement ähnlich sind, gibt es grundlegende Unterschiede bei den Funktionen zur Entwurfszeit und zur Laufzeit. Beide Klassen verwalten eine Auflistung von Listenelementen. Während das List-Steuerelement von der PagedControl-Klasse und letzten Endes von der MobileControl-Klasse abgeleitet werden, wird das SelectionList-Steuerelement direkt von der MobileControl-Klasse abgeleitet und besitzt keine Eigenschaften zum Behandeln der Paginierung, wie die ItemWeight-Eigenschaft.

Der Hauptunterschied zwischen den Klassen liegt darin, dass die SelectionList-Klasse einzelne oder mehrere ausgewählte Elemente unterstützt. Die SelectType-Eigenschaft enthält den ListSelectType-Enumerationswert, der bestimmt, ob sich SelectionList im Einfach- oder Mehrfachauswahlmodus befindet.

Mit der List-Klasse können Sie nur einzelne Elemente in einer Liste auswählen. Dagegen können Sie mit der SelectionList-Klasse eine Vielzahl von Listentypen angeben, etwa CheckBox, DropDown, ListBox, MultiSelectListBox und Radio.

Funktionen von "SelectionList"

Ein SelectionList-Steuerelement befindet sich im Einfachauswahlmodus, wenn Sie die SelectType-Eigenschaft folgendermaßen festlegen:

Behandeln der Auswahl

Um das aktuell ausgewählte Element in einem SelectionList-Steuerelement im Einfachauswahlmodus abzurufen, verwenden Sie dieSelectedIndex-Eigenschaft und die Selection-Eigenschaft.

Der CheckBox-Enumerationswert und der MultiSelectListBox-Enumerationswert zeigen den Mehrfachauswahlmodus an. Um die Auswahl abzurufen, fragen Sie die Selected-Eigenschaft jedes Elements ab.

Das folgende Beispiel zeigt, wie die ausgewählten Werte aus einer Mehrfachauswahl-Liste abgerufen werden.

<%@ Page Language="VB" 
    Inherits="System.Web.UI.MobileControls.MobilePage" %>
<%@ Register TagPrefix="mobile" 
    Namespace="System.Web.UI.MobileControls" 
    Assembly="System.Web.Mobile" %>

<script runat="server">
    private class Person
        ' Private Fields
        Private _Name, _Nickname As String

        ' Constructor
        Public Sub New(ByVal name As String, _
            ByVal nickname As String)
            Me._Name = name
            Me._Nickname = nickname
        End Sub
        ' Public Properties
        Public ReadOnly Property Name()
            Get
                Return _Name
            End Get
        End Property
        Public ReadOnly Property Nickname()
            Get
                Return _Nickname
            End Get
        End Property
    End Class

    ' An ArrayList for the Person objects
    Dim presidents = New ArrayList()

    Private Sub Page_Load(ByVal sender As Object, _
        ByVal e As EventArgs)

        ' Fill the presidents ArrayList
        presidents.Add( _
            New Person("George Washington", "George"))
        presidents.Add( _
            New Person("Abraham Lincoln", "Abe"))
        presidents.Add( _
            New Person("Theodore Roosevelt", "Teddy"))

        If Not IsPostBack Then
            ' Bind the array to the list.
            SelectionList1.DataSource = presidents
            ' Specify the field to display
            SelectionList1.DataValueField = "Name"
            SelectionList1.DataBind()
        End If
    End Sub

    Protected Sub Command1_Click( _
        ByVal sender As Object, ByVal e As EventArgs)

        Dim retval As String = String.Empty
        Dim per As Person

        If Not SelectionList1.IsMultiSelect Then
            retval = "Value: "

            ' Get the selected item
            per = CType(presidents(SelectionList1.SelectedIndex), Person)

            ' Get the text of the item
            If Not IsNothing(per) Then
                retval &= per.Name & "(" & per.Nickname & ")"
            End If
        ElseIf SelectionList1.IsMultiSelect Then
            retval = "Values: "
            ' Gather the text from list items
            Dim li As MobileListItem
            Dim i As Integer = 0
            For i = 0 To SelectionList1.Items.Count - 1
                li = SelectionList1.Items(i)

                ' Gather text only from selected items
                If li.Selected Then
                    per = CType(presidents(li.Index), Person)
                    retval &= per.Name & "(" & per.Nickname & "), "
                End If
            Next
        End If

        ' Clean ending comma, if any
        If retval.IndexOf(", ") > -1 Then
            retval = retval.Substring(0, retval.Length - 2)
        End If

        ' Put return value into the Label
        Label1.Text = retval

        ' Activate Form2
        Me.ActiveForm = Form2
    End Sub

    Protected Sub Command2_Click( _
        ByVal sender As Object, ByVal e As EventArgs)
        ' Activate Form1
        Me.ActiveForm = Form1
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
    <mobile:form id="Form1" runat="server">
        Select several items in the list:<br />
        <mobile:SelectionList ID="SelectionList1" 
            Runat="server" SelectType="Checkbox">
        </mobile:SelectionList>
        <mobile:Command ID="Command1" Runat="server" 
            OnClick="Command1_Click">
            Record Choices
        </mobile:Command>
    </mobile:form>
    <mobile:Form ID="Form2" Runat="server">
        <mobile:Label ID="Label1" runat="server" />
        <mobile:Command ID="Command2" Runat="server" 
            OnClick="Command2_Click">Return
        </mobile:Command>
    </mobile:Form>
</body>
</html>
<%@ Page Language="C#" 
    Inherits="System.Web.UI.MobileControls.MobilePage" %>
<%@ Register TagPrefix="mobile" 
    Namespace="System.Web.UI.MobileControls" 
    Assembly="System.Web.Mobile" %>

<script runat="server">
    private class Person
    {
        // Private Fields
        private String _Name, _Nickname;

        // Constructor
        public Person(string name, string nickname)
        {
            this._Name = name;
            this._Nickname = nickname;
        }
        // Public Properties
        public String Name { get { return _Name; } }
        public String Nickname { get { return _Nickname; } }
    }

    // An ArrayList for the Person objects
    ArrayList presidents = new ArrayList();

    private void Page_Load(object sender, System.EventArgs e)
    {
        // Fill the Person object
        presidents.Add(
            new Person("George Washington", "George"));
        presidents.Add(
            new Person("Abraham Lincoln", "Abe"));
        presidents.Add(
            new Person("Theodore Roosevelt", "Teddy"));

        if (!IsPostBack)
        {
            // Bind the array to the list.
            SelectionList1.DataSource = presidents;
            // Specify the field to display
            SelectionList1.DataValueField = "Nickname";
            SelectionList1.DataBind();
        }
    }

    protected void Command1_Click(object sender, EventArgs e)
    {
        string retval = String.Empty;
        Person per;

        if (!SelectionList1.IsMultiSelect)
        {
            retval = "Value: ";
            // Get the selected item
            per = (Person)presidents[SelectionList1.SelectedIndex];

            // Get the name and nickname of the person
            if (per != null)
                retval += per.Name + " (" + per.Nickname + ")";
        }
        else if (SelectionList1.IsMultiSelect)
        {
            retval = "Values: ";
            // Gather the text from list items
            foreach (MobileListItem li in SelectionList1.Items)
            {
                // Gather text only from selected items
                if (li.Selected)
                {
                    per = (Person)presidents[li.Index];
                    retval += per.Name + " (" + per.Nickname + "), ";
                }
            }
        }

        // Clean ending comma, if any
        if (retval.IndexOf(", ") > -1)
            retval = retval.Substring(0, retval.Length - 2);

        // Put return value into the Label
        Label1.Text = retval;

        // Activate Form2
        this.ActiveForm = Form2;
    }

    protected void Command2_Click(object sender, EventArgs e)
    {
        // Activate Form1
        this.ActiveForm = Form1;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
    <mobile:form id="Form1" runat="server">
        Select several items in the list:<br />
        <mobile:SelectionList ID="SelectionList1" 
            Runat="server" SelectType="Checkbox">
        </mobile:SelectionList>
        <mobile:Command ID="Command1" Runat="server" 
            OnClick="Command1_Click">
            Record Choices
        </mobile:Command>
    </mobile:form>
    <mobile:Form ID="Form2" Runat="server">
        <mobile:Label ID="Label1" runat="server" />
        <mobile:Command ID="Command2" Runat="server" 
            OnClick="Command2_Click">Return
        </mobile:Command>
    </mobile:Form>
</body>
</html>

Hinzufügen von Elementen zu einem Listensteuerelement

Ein List-Steuerelement enthält eine Auflistung von Elementen in der MobileListItem-Klasse. Es gibt mehrere Möglichkeiten, einem List-Steuerelement Elemente hinzuzufügen:

  • Erstellen Sie <Item>-Elemente in einer Liste. Jedes <Item>-Element wird zu einem MobileListItem in der Liste, und dessen Eigenschaften werden von Attributen des <Item> -Elements festgelegt.

  • Fügen Sie der Liste Elemente programmgesteuert mit der Items-Auflistung des List-Steuerelements hinzu. Sie können ein MobileListItem-Objekt erstellen und es der Auflistung vor der Wiedergabe hinzufügen.

  • Binden Sie das List-Steuerelement an Daten, insbesondere an Objekte, die die IEnumerable-Schnittstelle oder die IListSource-Schnittstelle implementieren, zum Beispiel das ArrayList-Objekt oder das DataSet Objekt.

Siehe auch

Konzepte

Zugreifen auf Daten mit Auflistungssteuerelementen

Referenz

List

ObjectList

Weitere Ressourcen

Zugreifen auf Daten mit ASP.NET

Entwickeln von ASP.NET Mobile-Webseiten

Anwendungsentwicklerhandbuch