2010-04-08 4 views
0

comment détecter la grille vue vide cellule? J'en ai besoin pour surligner. Je fis donc un autocommutateurcomment détecter grille afficher la cellule vide

.RedColored 
{ 
    background: FF0000; 
} 

et essayant de paraître à vider les cellules GV cette façon:

protected virtual GridView1_RowDataBound (_sender : object, e : System.Web.UI.WebControls.GridViewRowEventArgs) : void 
     { 
      e.Row.Cells[0].CssClass = "wide"; 
      foreach(i : int in [0..e.Row.Cells.Count-1]) 
      { 
       when(e.Row.Cells[i].Text==null) 
       { 
        e.Row.Cells[i].CssClass="RedColored"; 
       } 
      } 
     } 

, mais il ne me semble pas des cellules vides, même je l'ai essayé Text = = "", Cellule [i] == null, Cellule [i] .ToString() == "" et rien n'a aidé.

recoded to :    

def IsCellNull(cell : TableCell) : bool 
      { 
       | null => true 
       | c => string.IsNullOrEmpty(c.ToString()) || c.GetType().Name == "DBNull" 
     } 

      foreach(i : int in [0..e.Row.Cells.Count-1]) 
      { 
       when(IsCellNull(e.Row.Cells[i])) 
       { 
        e.Row.Cells[i].Text="BLABLA"; 
        e.Row.Cells[i].CssClass="RedColored"; 
       } 
      } 

Mais !!! Il n'a même pas aidé, il fonctionne sans WHEN, mais quand (si) ne peut pas trouver des cellules vides: P Enfin: résolu avec ce code: `e.Row.Cells [0] .CssClass =" large ";

 def IsCellNull(cell : TableCell) : bool 
     { 
      | null => true 
      | c => string.IsNullOrEmpty(c.ToString()) 
      || c.GetType().Name == "DBNull" 
      || c.Text==" " 
     } 

     foreach(i : int in [0..e.Row.Cells.Count-1]) 
     { 
      when(IsCellNull(e.Row.Cells[i])) 
      { 
       e.Row.Cells[i].BackColor=System.Drawing.Color.Red; 
      } 
     }` 

Répondre

1

Dans certains navigateurs, la cellule ne sera pas afficher une couleur si elle est vide. Ajout d'un espace dans il résout ce problème, mais il ne sera plus vide ...

Pour tester une cellule, vous devez utiliser String.IsNullOrEmpty():

when(string.IsNullOrEmpty(e.Row.Cells[i].Text)) 
{ 
    e.Row.Cells[i].Text=" "; // Or sometimes a no break space -   will work better 
    e.Row.Cells[i].CssClass="RedColored"; 
} 
+0

quand (e.Row.Cells [i] .Text == null) \t {E.Row.Cells [i] .Text = "BLABLA"; cela ne fonctionne pas pour mes cellules vides. – Cynede

+1

@nCdy - utilise IsNullOrEmpty pour vérifier les chaînes. – Oded

1

J'ai écrit un utilitaire fonction pour cela dans le passé, il est en VB.NET, mais devrait être assez straighforward pour convertir en C#

fonction publique partagée IsCellBlank (cellule ByVal comme DataGridViewCell) As Boolean

If (cell.Value Is Nothing) Then 
     Return True 
    End If 



    If (cell.Value.ToString().Length = 0) 

Puis

 Return True 
    End If 

    If (cell.Value.GetType().Name = "DBNull") Then 
     Return True 
    End If 


    Return False 
End Function 
+0

vérifier mon recode ... – Cynede

3

"When a bound GridView cell contains no data, ASP.NET fills it with   Hence the length of 6"

http://bytes.com/topic/asp-net/answers/768857-how-check-if-cell-gridview-empty

+0

Remplit avec quoi, ce n'est pas clair à partir de la réponse. – jonsca

+0

il remplit la cellule avec l'entité html   (espace insécable), il ressemble à un espace vide mais il est en fait 6 caractères dans la source –

+0

Got it, thanks! Je ne savais pas si cela faisait partie de votre réponse ou de votre formatage. – jonsca

1

Essayez ceci:

protected void grdList_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    {     
     if (e.Row.Cells[3].Text.Equals(" ")) 
     { 
      e.Row.Cells[3].BackColor = Color.Red; 
     } 
    } 
} 
Questions connexes