2010-04-08 3 views
0

как определить вид сетки пустой ячейки? Мне нужно это для выделения. Так что я сделал КАСкак определить вид сетки пустая ячейка

.RedColored 
{ 
    background: FF0000; 
} 

и пытается появиться его в пустые ячейки GV таким образом:

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

, но мой не появляется на пустые ячейки, даже я пытался текст = = "", Cell [i] == null, Cell [i] .ToString() == "", и ничего не помогло.

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

Но !!! Это даже не помогло, оно работает без КОГДА, но когда (если) не может найти пустые ячейки: P Наконец: с помощью этого кода: `e.Row.Cells [0] .CssClass =" wide ";

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

ответ

1

В некоторых браузерах, ячейка не будет отображать цвет, если он пуст. Добавление пространства в нем решает эту проблему, но тогда это уже не будет пустым ...

Чтобы проверить ячейку, следует использовать 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

когда (e.Row.Cells [я] .Text == NULL) \t { \t e.Row.Cells [i] .Text = "BLABLA"; он не работает для моих пустых ячеек. – Cynede

+1

@nCdy - использовать IsNullOrEmpty для проверки строк. – Oded

1

Я написал утилиту функция для этого в прошлом, то в VB.NET, но должно быть довольно straighforward преобразовать в C#

Public Shared Function IsCellBlank (ByVal Клетка как DataGridViewCell) As Boolean

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



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

Тогда

 Return True 
    End If 

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


    Return False 
End Function 
+0

проверить мой 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

Заполняет его тем, что непонятно из ответа. – jonsca

+0

он заполняет ячейку html-объектом   (неразрывное пространство), он выглядит как пустое пространство, но на самом деле это 6 символов в источнике –

+0

Понял, спасибо! Я не был уверен, что это было частью вашего ответа или форматирования. – jonsca

1

Попробуйте это:

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; 
     } 
    } 
} 
Смежные вопросы