2017-10-12 5 views
0
Private Sub GridView1_RowCellStyle(sender As Object, e As 
    RowCellStyleEventArgs) Handles GridView1.RowCellStyle 
    Try 
     If IsDBNull(e.CellValue) Then 
      e.Appearance.BackColor = Color.LightYellow 
     End If 
     Dim selectedCells As GridCell() = GridView1.GetSelectedCells() 
     isRowSelected = GridView1.IsRowSelected(e.RowHandle) 
     For Each Cells In selectedCells 
      If GridView1.GetSelectedCells.Count = 1 Then 
       If IsDBNull(GridView1.GetRowCellValue(Cells.RowHandle, 
        Cells.Column)) Then 
        e.Appearance.BackColor = Color.LightYellow 
       End If 
      Else 
       If isRowSelected Then 
        If IsDBNull(GridView1.GetRowCellValue(Cells.RowHandle, 
         Cells.Column)) Then 
         e.Appearance.BackColor = Color.FromArgb(226, 234, 
          253) 
        End If 
       End If 
      End If 
     Next 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 

This is my Output Screen Devexpress xtragridxtragrid cellulaire et les lignes de sélection utilisant DevExpress Winforms Vb.net

J'utilise DevExpress .I déclarer la valeur « DBNull » doit être de couleur par défaut dans « Lightyellow'.After je veux être sélectionné rows ou Cell dans la valeur 'DbNull' pour changer la couleur bleue. Qu'ai-je fait de mal? Je veux être Sélectionnez les cellules ou les lignes à modifier la couleur (cette valeur nulle également)

+0

Que devrait changer en bleu? La rangée entière, ou juste cette cellule? – greenTree

+0

ligne sélectionnée ou cellule à modifier Couleur bleue. (Cette valeur Null également) –

Répondre

0

Il est illogique de parcourir les cellules sélectionnées dans le gestionnaire d'événements RowCellStyle car cet événement est levé uniquement pour un unicellulaire. Finalement, il va augmenter pour toutes les cellules visibles.

Ainsi, le code suivant sera suffisant pour compléter votre tâche:

Private Sub GridView1_RowCellStyle(ByVal sender As Object, ByVal e As RowCellStyleEventArgs) 
    Dim view As GridView = TryCast(sender, GridView) 
    Dim isRowSelected As Boolean = view.IsRowSelected(e.RowHandle) 
    If IsDbNull(e.CellValue) AndAlso (Not isRowSelected) Then 
     e.Appearance.BackColor = Color.Yellow 
    End If 
End Sub 

-t-il pour vous?

+0

N ° sélectionné Cellule de colonne HireDate particulière mais la valeur de cellule presque nulle change également la couleur Jaune. Mais j'ai besoin seulement de la valeur NULL sélectionnée pour changer la couleur bleue Couleur. –

0
Dim state As GridRowCellState 
     state = DirectCast(e.Cell, GridCellInfo).State 
     If (state And GridRowCellState.Selected) = GridRowCellState.Selected Then 
      e.Appearance.BackColor = Color.FromArgb(226, 234, 253) 
     End If 

Ce code est utilisé pour sélectionner les cellules à modifier la couleur de votre apparence. GridRowCellState contient les états des cellules de ligne pour les événements de personnalisation de l'apparence de la commande Grid. Les cellules sélectionnées indiquent que la ligne/cellule en cours de traitement est sélectionnée. This is My Output

+4

Les réponses au code uniquement sont déconseillées. Pouvez-vous ajouter des détails expliquant votre réponse? – DiskJunky

+1

Veuillez consulter [Comment écrire une bonne réponse] (https://stackoverflow.com/help/how-to-answer). Les réponses au code uniquement sont déconseillées car elles n'expliquent pas comment elles résolvent le problème dans la question. Vous devriez mettre à jour votre réponse pour expliquer ce que cela fait et comment cela résout le problème. – FluffyKitten