Partager via


Comment : personnaliser des éléments DataList au moment de l'exécution

Mise à jour : novembre 2007

Au cours du traitement d'une page, le contrôle DataList crée les éléments individuels qu'il doit rendre sur la page. Afin de permettre la personnalisation des éléments au fur et à mesure de leur création, le contrôle DataList déclenche deux événements :

  • L'événement ItemCreated est déclenché lorsque le contrôle DataList crée chaque élément, élément alterné, en-tête, pied de page, et ainsi de suite.

  • L'événement ItemDataBound est déclenché une fois que les contrôles d'un élément ont été liés aux données. Vous pouvez utiliser les paramètres d'événement pour accéder aux données servant à la liaison de données. Utilisez cet événement si la personnalisation est fonction des données.

En répondant à ces événements, vous pouvez modifier les éléments. Un exemple d'utilisation classique est la modification de l'apparence de l'élément en fonction des données affichées dans celui-ci. Par exemple, si une valeur numérique lue dans la base de données est négative, il est possible de définir une couleur rouge pour l'arrière-plan de l'élément.

Pour personnaliser les éléments au moment de l'exécution à l'aide de l'événement ItemCreated

  1. Créez un gestionnaire d'événements pour l'événement ItemCreated du contrôle DataList.

  2. Dans le gestionnaire d'événements, recherchez l'élément actif à l'aide de l'objet Item issu de l'objet événement-argument e. L'index de l'élément actuel est disponible par le biais de la propriété ItemIndex de l'objet Item, et son type est disponible par le biais de sa propriété ItemType (laquelle est définie à l'aide de l'énumération ListItemType).

    Remarque :

    La propriété ItemIndex retourne uniquement une valeur positive pour les objets Item, AlternatingItem et SelectedItem. La valeur d'index des éléments d'en-tête, de pied de page et des séparateurs est -1.

    L'exemple suivant montre comment modifier conditionnellement la couleur d'arrière-plan d'un élément. L'exemple utilise la propriété ItemType et l'énumération ListItemType pour définir les couleurs d'arrière-plan des éléments. Les valeurs LightGoldenrodYellow, DarkGoldenrod et Yellow sont définies respectivement pour les éléments, les éléments alternés et l'élément sélectionné.

    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;
          }
    }
    

Au moment où l'événement ItemCreated est déclenché, les différents contrôles figurant dans les modèles ne sont pas encore liés aux données. Toutefois, les données sont disponibles dans l'événement ItemDataBound.

Pour personnaliser les éléments au moment de l'exécution à l'aide de l'événement ItemDataBound

  1. Créez un gestionnaire d'événements pour l'événement ItemDataBound du contrôle DataList.

  2. Dans le gestionnaire d'événements, vérifiez que vous travaillez avec un Item**, un** AlternatingItem ou un EditItem et pas avec un en-tête ou un pied de page.

  3. Utilisez la propriété DataItem pour tester les données qui seront liées au contrôle et effectuer une comparaison sur la base de ces données.

    L'exemple suivant montre comment effectuer un test conditionnel fondé sur les données. L'exemple effectue un cast de la propriété DataItem de l'argument d'événement sous forme d'objet DataRowView. Il extrait ensuite le champ appelé Quantité du contrôle DataItem actuel. Si la quantité est inférieure à 10, l'élément du contrôle DataList est affiché en rouge.

    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;
           }
        }
    }
    

Voir aussi

Référence

Vue d'ensemble du contrôle serveur Web DataList