Sdílet prostřednictvím


Erstellen eines Objekts für eine Liste aus einem Auflistungselement

Aktualisiert: November 2007

In den folgenden Schritten wird beschrieben, wie ein mobiles List-Steuerelement eine MobileListItem-Instanz aus einem Element in der Auflistung erstellt:

  1. Das Steuerelement überprüft, ob die DataTextField-Eigenschaft oder die DataValueField-Eigenschaft definiert ist. Wenn dies der Fall ist, ermittelt das Steuerelement mit diesen Feldnamen Eigenschaften des Elements und legt die Text-Eigenschaft und die Value-Eigenschaft der MobileListItem-Instanz fest.

  2. Wenn weder die DataTextField-Eigenschaft noch die DataValueField-Eigenschaft definiert ist, legt das Steuerelement die Text-Eigenschaft und die Value-Eigenschaft der MobileListItem-Instanz auf die Zeichenfolgendarstellung des Elements fest (mithilfe der ToString-Methode).

  3. Wenn Sie einen ItemDataBind-Ereignishandler definiert haben, wird der Handler aufgerufen. Sie können mit diesem Handler Eigenschaften der MobileListItem-Instanz festlegen.

Bei der Standardwiedergabe stellt das Listensteuerelement eine MobileListItem-Instanz durch seine Text-Eigenschaft dar. Bei der Wiedergabe mit Vorlagen kann die Vorlage eine gewünschte Eigenschaft der MobileListItem-Instanz oder ein zugeordnetes datengebundenes Objekt wiedergeben.

Wenn die ItemsAsLinks-Eigenschaft festgelegt ist, gibt das List-Steuerelement Elemente als Hyperlinks wieder. Der Wert der Text-Eigenschaft wird zum Hyperlinktext, und der Wert der Value-Eigenschaft wird zum Ziel-URL.

Behandeln der Auswahl

Wenn es sich um eine komplexe Liste handelt, z. B. ein Array von Objekten, können Sie auf die Member des gewünschten Elements nicht direkt über die Auswahl zugreifen. Wenn Sie die Anwendung jedoch entsprechend entwerfen, können Sie auf das zugeordnete Objekt zugreifen. Wenn Sie zum Auffüllen der Liste eine Gruppe von Objekten erstellen, können Sie die Gruppe in ein globales Array umwandeln und dann den zurückgegebenen Wert als Index für das Array behandeln, wie in folgendem Codebeispiel gezeigt wird.

<%@ 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 customers(3) As Person

    Private Class Person
        Private _Name, _Nickname, _Initials As String

        Public Sub New(ByVal name As String, _
            ByVal nickname As String, ByVal initials As String)
            Me._Name = name
            Me._Nickname = nickname
            Me._Initials = initials
        End Sub

        Public ReadOnly Property Name() As String
            Get
                Return _Name
            End Get
        End Property
        Public ReadOnly Property Nickname() As String
            Get
                Return _Nickname
            End Get
        End Property
        Public ReadOnly Property Initials() As String
            Get
                Return _Initials
            End Get
        End Property
    End Class

    Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        ReDim customers(2)
        customers(0) = New Person("George Washington", "George", "GW")
        customers(1) = New Person("Abraham Lincoln", "Abe", "AL")
        customers(2) = New Person("Theodore Roosevelt", "Teddy", "TR")

        If (Not IsPostBack) Then
            ' Bind the array to the list.
            List1.DataSource = customers
            List1.DataTextField = "Name"
            List1.DataBind()
        End If
    End Sub

    Protected Sub List1_ItemCommand(ByVal sender As Object, _
        ByVal e As ListCommandEventArgs)

        Dim selectedPerson As Person = customers(e.ListItem.Index)
        Label1.Text = String.Format("{0} (AKA {1}), initials {2}", _
            selectedPerson.Name, selectedPerson.Nickname, _
            selectedPerson.Initials)

        ActiveForm = Form2
    End Sub

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

        Me.ActiveForm = Me.Form1
    End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
    <mobile:form id="Form1" runat="server">
        <mobile:List ID="List1" Runat="server" OnItemCommand="List1_ItemCommand">
        </mobile:List>
    </mobile:form>
    <mobile:Form ID="Form2" Runat="server">
        <mobile:Label ID="Label1" runat="server">Label</mobile:Label>
        <mobile:Command ID="Command1" Runat="server" OnClick="Command1_Click">Return to Form1</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 Person[] customers = new Person[3];

    private class Person
    {
        private String _Name, _Nickname, _Initials;

        public Person(String name, String nickname, String initials)
        {
            this._Name     = name;
            this._Nickname = nickname;
            this._Initials = initials;
        }

        public String Name     { get { return _Name;     } }
        public String Nickname { get { return _Nickname; } }
        public String Initials { get { return _Initials; } }
    }

    private void Page_Load(object sender, System.EventArgs e)
    {
        customers[0] = new Person("George Washington", "George", "GW");
        customers[1] = new Person("Abraham Lincoln", "Abe", "AL");
        customers[2] = new Person("Theodore Roosevelt", "Teddy", "TR");

        if(!IsPostBack)
        {
            // Bind the array to the list.
            List1.DataSource    = customers;
            List1.DataTextField = "Name";
            List1.DataBind();
        }
    }

    private void List1_ItemCommand(object sender, 
        ListCommandEventArgs e)
    {
        Person selectedPerson = customers[e.ListItem.Index];
        Label1.Text = String.Format("{0} (AKA {1}), initials {2}", 
            selectedPerson.Name, selectedPerson.Nickname,
            selectedPerson.Initials);

        ActiveForm = Form2;
    }

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

<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
    <mobile:form id="Form1" runat="server">
        <mobile:List ID="List1" Runat="server" OnItemCommand="List1_ItemCommand">
        </mobile:List>
    </mobile:form>
    <mobile:Form ID="Form2" Runat="server">
        <mobile:Label ID="Label1" runat="server">Label</mobile:Label>
        <mobile:Command ID="Command1" Runat="server" OnClick="Command1_Click">Return to Form1</mobile:Command>
    </mobile:Form>
</body>
</html>

Siehe auch

Konzepte

Zugreifen auf Daten mit Auflistungssteuerelementen