Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887

    Datagrid: Item, AlternatingItem, EditItem

    Ciao, sto utilizzando l'evento _ItemDataBound per aggiungere degli scriptini agli item & alternatingitem di un DGrid.

    Come faccio però a sapere, per un EditItem, se esso era un Item o un Alternating (i due hanno colori differenti di sfondo, ed al MouseOver & MouseOut si devono comportare diversamente....) ??

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127

    Re: Datagrid: Item, AlternatingItem, EditItem

    Originariamente inviato da djciko
    Ciao, sto utilizzando l'evento _ItemDataBound per aggiungere degli scriptini agli item & alternatingitem di un DGrid.

    Come faccio però a sapere, per un EditItem, se esso era un Item o un Alternating (i due hanno colori differenti di sfondo, ed al MouseOver & MouseOut si devono comportare diversamente....) ??
    forse c'è una funzione apposita, ma ti dò cmq un mio suggerimento.
    il tuo datagrid è fatto cosi
    codice:
    Item
    AItem
    Item
    AItem
    Item
    ecc.
    [siccome l'indice delle righe parte da 0] se ne deduce che gli Item sono le righe di indice pari, gli Aitem quelli di indice dispari

  3. #3
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    ...

    Dim itemType As ListItemType = e.Item.ItemType
    If itemType = ListItemType.Item then
    'sei negli item
    end if
    If itemType = ListItemType.AlternatingItem then
    'sei negli AlternatingItem
    end if
    If itemType = ListItemType.Footer then
    'sei negli Footer
    end if

    nota che gli edititem non sono ne item ne alternateitem
    If itemType = ListItemType.EditItem then
    'sei negli EditItem
    end if

    Puoi riuscire a sapere il colore di fondo analizzando la property BackColor delle TableCell, ma sinceramente mi sfugge il motivo.


    Legnetto

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Originariamente inviato da Legnetto
    ...

    Dim itemType As ListItemType = e.Item.ItemType
    If itemType = ListItemType.Item then
    'sei negli item
    end if
    If itemType = ListItemType.AlternatingItem then
    'sei negli AlternatingItem
    end if
    If itemType = ListItemType.Footer then
    'sei negli Footer
    end if

    nota che gli edititem non sono ne item ne alternateitem
    If itemType = ListItemType.EditItem then
    'sei negli EditItem
    end if

    Puoi riuscire a sapere il colore di fondo analizzando la property BackColor delle TableCell, ma sinceramente mi sfugge il motivo.


    Legnetto

    E' perchè, durante il rendering aggiungo (con Attributes.Add) un JS che fa in modo che al MouseOver la riga cambi colore, e che al MouseOut torni com'era.

    Ora, premettendo che le righe sono di colore alternato (bianco ed azzurro), dovendo aggiungere il JS anche agli EditItems, devo sapere se essi, prima di diventare un EditItem, erano un Item o un Alternate, per far tornare, al MouseOut la riga com'era prima (Bianca se era un Item, Azzurra se era un Alternate)...

    L'ItemIndex mi sembra una soluzione...

  5. #5
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    If itemType = ListItemType.EditItem then
    dim i as integer
    For i = 0 To e.Item.Controls.Count - 1
    Dim pager As TableCell = CType(e.Item.Controls(i), TableCell)
    dim colore as object = pager.BackColor
    next
    end if

    questo ciclo scorre tutte le tablecell(td) della riga in questione(tr).
    Così recupero il colore di fondo e lo imposto in una variabile object.
    Uso questo tipo di variabile perchè ho scritto il codice senza provarlo e non mi ricordo se mi ritorna una string tipo("blue") o un system.color.
    Ciao

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    codice:
      Protected Sub dgutenti_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
        If e.Item.ItemType = ListItemType.Item Then
          e.Item.Attributes.Add("onMouseOver", "javascript:this.style.backgroundColor='#ffcc00';")
          e.Item.Attributes.Add("onMouseOut", "javascript:this.style.backgroundColor='#ffffff';")
        End If
        If e.Item.ItemType = ListItemType.AlternatingItem Then
          e.Item.Attributes.Add("onMouseOver", "javascript:this.style.backgroundColor='#ffcc00';")
          e.Item.Attributes.Add("onMouseOut", "javascript:this.style.backgroundColor='#bbe3ff';")
        End If
        
        If e.Item.ItemType = ListItemType.EditItem Then
          If e.Item.ItemIndex Mod 2 = 0 Then
            e.Item.Attributes.Add("onMouseOver", "javascript:this.style.backgroundColor='#ffcc00';")
            e.Item.Attributes.Add("onMouseOut", "javascript:this.style.backgroundColor='#ffffff';")
          Else
            e.Item.Attributes.Add("onMouseOver", "javascript:this.style.backgroundColor='#ffcc00';")
            e.Item.Attributes.Add("onMouseOut", "javascript:this.style.backgroundColor='#bbe3ff';")
          End If
      End Sub
    ho risolto così.

  7. #7
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    L'importante è risolvere...
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.