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
Weitere Ressourcen
Zugreifen auf Daten mit ASP.NET