Gewusst wie: Anpassen von DataList-Elementen zur Laufzeit

Aktualisiert: November 2007

Das DataList-Steuerelement erstellt während der Seitenverarbeitung die einzelnen Elemente, die auf der Seite dargestellt werden. Damit Sie die Elemente während der Erstellung anpassen können, löst das DataList-Steuerelement die folgenden zwei Ereignisse aus:

  • Das ItemCreated-Ereignis wird jedes mal ausgelöst, wenn das DataList-Steuerelement ein Element, ein abwechselndes Element, einen Header oder Footer usw. erstellt.

  • Das ItemDataBound-Ereignis wird ausgelöst, nachdem die Steuerelemente in einem Element an Daten gebunden wurden. Über die Ereignisparameter können Sie auf die gebundenen Daten zuzugreifen. Verwenden Sie dieses Ereignis, wenn die Anpassung von den Daten abhängig ist.

Durch die Reaktion auf diese Ereignisse können Sie die Elemente ändern. Eine typische Verwendung besteht im Ändern der Darstellungsweise des Elements auf der Grundlage der darin angezeigten Daten. Wenn beispielsweise ein aus einer Datenbank erhaltener numerischer Wert negativ ist, können Sie die Hintergrundfarbe des Elements rot darstellen lassen.

So passen Sie Elemente während der Verwendung mithilfe des ItemCreated-Ereignisses an

  1. Erstellen Sie einen Ereignishandler für das ItemCreated-Ereignis des DataList-Steuerelements.

  2. Rufen Sie im Ereignishandler mithilfe des Item-Objekts aus dem e-Ereignisargumentobjekt das aktuelle Element ab. Der Index des aktuellen Elements ist im Item-Objekt über die ItemIndex-Eigenschaft zugänglich. Den Typ können Sie über die ItemType-Eigenschaft ermitteln (die mithilfe der ListItemType-Enumeration definiert wird).

    Hinweis:

    Die ItemIndex-Eigenschaft gibt nur für die Objekte Item, AlternatingItem und SelectedItem einen positiven Wert zurück. Der Indexwert für Header und Footer sowie Abtrennungselemente lautet –1.

    Das folgende Beispiel demonstriert, wie die Hintergrundfarbe eines Elements nach Bedarf konditional werden kann. In diesem Beispiel werden die ItemType-Eigenschaft und die ListItemType-Enumeration verwendet, um die Hintergrundfarben der Elemente festzulegen. Die Hintergrundfarbe der Elemente wird auf LightGoldenrodYellow festgelegt und die der abwechselnden Elemente auf DarkGoldenrod. Ausgewählte Elemente werden Yellow dargestellt.

    Protected Sub DataList1_ItemCreated(ByVal sender As Object, _
            ByVal e As EventArgs)
       Select Case e.Item.ItemType
          Case ListItemType.Item
             e.Item.BackColor = _
                 System.Drawing.Color.LightGoldenrodYellow
          Case ListItemType.AlternatingItem
             e.Item.BackColor = System.Drawing.Color.DarkGoldenrod
          Case ListItemType.SelectedItem
             e.Item.BackColor = System.Drawing.Color.Yellow
          Case Else
             ' Add code here to hand the header, footer, and
             ' separator templates.
       End Select
    End Sub
    
    protected void DataList1_ItemCreated(object sender, 
        EventArgs e)
    {
       switch (e.Item.ItemType)
       {
          case ListItemType.Item :
             e.Item.BackColor = 
                 System.Drawing.Color.LightGoldenrodYellow;
             break;
          case ListItemType.AlternatingItem :
             e.Item.BackColor = System.Drawing.Color.DarkGoldenrod;
             break;
          case ListItemType.SelectedItem :
             e.Item.BackColor = System.Drawing.Color.Yellow;
             break;
          default :
             // Add code here to handle the header, footer, and 
             // separator templates.
             break;
          }
    }
    

Zu dem Zeitpunkt, zu dem das ItemCreated-Ereignis ausgelöst wird, sind die einzelnen Steuerelemente in der Vorlage noch nicht an Daten gebunden. Die Daten sind jedoch im ItemDataBound-Ereignis verfügbar.

So passen Sie Elemente während der Verwendung mithilfe des ItemDataBound-Ereignisses an

  1. Erstellen Sie einen Ereignishandler für das ItemDataBound-Ereignis des DataList-Steuerelements.

  2. Prüfen Sie im Ereignishandler, ob es sich um ein Item,AlternatingItem oder EditItem und nicht um einen Header oder Footer handelt.

  3. Verwenden Sie die DataItem-Eigenschaft, um die an das Steuerelement zu bindenden Daten zu überprüfen und vergleichen Sie auf dieser Grundlage.

    Das folgende Beispiel zeigt, wie ein auf Daten basierender bedingter Test ausgeführt wird. Im Beispiel wird die DataItem-Eigenschaft des Ereignisarguments in ein DataRowView-Objekt umgewandelt. Dann wird das Feld mit dem Namen Quantity aus dem aktuellen DataItemabgerufen. Wenn die Menge kleiner als 10 ist, wird das Element des DataList-Steuerelements rot dargestellt.

    Protected Sub DataList1_ItemDataBound(ByVal sender As Object, _
            ByVal e As DataListItemEventArgs)
        If e.Item.ItemType = ListItemType.Item Or _
                e.Item.ItemType = ListItemType.AlternatingItem Then
            Dim drv As System.Data.DataRowView = _
                CType(e.Item.DataItem, System.Data.DataRowView)
            Dim quantity As Integer = _
                Integer.Parse(drv.Row("Quantity").ToString())
            If (quantity < 10) Then
                e.Item.BackColor = System.Drawing.Color.Red
            End If
        End If
    End Sub
    
    protected void DataList1_ItemDataBound(object sender, 
            DataListItemEventArgs e)
    {
       if(e.Item.ItemType == ListItemType.Item || 
              e.Item.ItemType == ListItemType.AlternatingItem)
       {
           System.Data.DataRowView drv = 
               (System.Data.DataRowView)(e.Item.DataItem);
           int quantity = int.Parse(drv.Row["Quantity"].ToString());
           if (quantity < 10)
           {
              e.Item.BackColor = Color.Red;
           }
        }
    }
    

Siehe auch

Referenz

Übersicht über das DataList-Webserversteuerelement