Condividi tramite


Procedura: personalizzare gli elementi DataList in fase di esecuzione

Aggiornamento: novembre 2007

Durante l'elaborazione della pagina, il controllo DataList crea singoli elementi di cui verrà eseguito il rendering nella pagina. Per consentire la personalizzazione degli elementi durante la creazione, il controllo DataList genera due eventi:

  • L'evento ItemCreated viene generato quando il controllo DataList crea ciascun elemento, elemento alternato, intestazione, piè di pagina e così via.

  • L'evento ItemDataBound viene generato dopo che i controlli all'interno di un elemento sono stati associati a dei dati. È possibile utilizzare i parametri di evento per accedere ai dati utilizzati per l'associazione dati. Questo evento può essere utilizzato se la personalizzazione dipende dai dati.

Rispondendo a tali eventi è possibile modificare gli elementi. Vengono in genere utilizzati per modificare l'aspetto dell'elemento in base ai dati in esso visualizzati. È ad esempio possibile impostare il colore di sfondo dell'elemento sul colore rosso nel caso in cui un valore numerico letto da un database sia negativo.

Per personalizzare gli elementi in fase di esecuzione mediante l'evento ItemCreated

  1. Creare un gestore eventi per l'evento ItemCreated del controllo DataList.

  2. Nel gestore eventi ottenere l'elemento corrente utilizzando l'oggetto Item dall'oggetto argomento dell'evento e. L'indice dell'elemento corrente è disponibile tramite la proprietà ItemIndex dell'oggetto Item e il relativo tipo è disponibile tramite la relativa proprietà ItemType (che viene definita utilizzando l'enumerazione ListItemType).

    Nota:

    La proprietà ItemIndex restituisce un valore positivo solo per gli oggetti Item, AlternatingItem e SelectedItem. Il valore dell'indice per gli elementi corrispondenti a intestazioni, piè di pagina e separatori è -1.

    L'esempio riportato di seguito illustra come modificare il colore di sfondo di un elemento in base a determinate condizioni. Nell'esempio viene utilizzata la proprietà ItemType e l'enumerazione ListItemType per impostare i colori di sfondo degli elementi. Gli elementi vengono impostati su LightGoldenrodYellow, gli elementi alternati vengono impostati su DarkGoldenrod e l'elemento selezionato su Yellow.

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

Quando viene generato l'evento ItemCreated, i singoli controlli nei modelli non sono ancora stati associati ai dati. I dati sono tuttavia disponibili nell'evento ItemDataBound.

Per personalizzare gli elementi in fase di esecuzione mediante l'evento ItemDataBound

  1. Creare un gestore eventi per l'evento ItemDataBound del controllo DataList.

  2. Nel gestore eventi assicurarsi di utilizzare un elemento Item,AlternatingItem o EditItem e non un'intestazione o piè di pagina.

  3. Utilizzare la proprietà DataItem per verificare i dati che verranno associati al controllo ed effettuare un confronto in base a tale verifica.

    L'esempio riportato di seguito illustra come effettuare una verifica condizionale in base ai dati. Nell'esempio viene eseguito il cast della proprietà DataItem dell'argomento dell'evento come un oggetto DataRowView. Viene quindi estratto il campo denominato Quantity dall'elemento DataItem corrente. Se la quantità è inferiore a 10, l'elemento nel controllo DataList viene visualizzato in rosso.

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

Vedere anche

Riferimenti

Cenni preliminari sul controllo server Web DataList