2015-10-10 45 views
2

如果單元格的文本爲!=「nbsp;」,我已經放置了一個代碼給COLOR GRIDVIEW Cell#14的背景。除了最後一行,它確實有效。即使不等於「nbsp」,也不會爲最後一行着色爲什麼foreach循環在gridview的最後一行失敗?

protected void grdviewCases_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      foreach (GridViewRow gr in grdviewCases.Rows) 
      { 
       if (gr.Cells[14].Text != " ") 
       { 
        gr.Cells[14].BackColor = Color.Red; ; 
        gr.Cells[14].ForeColor = Color.WhiteSmoke; 
       } 
      } 
     } 
    } 
+0

它可能的情況是新行只有在RowDataBound事件發生後才被添加到Rows集合中。我會先檢查一下。 –

+2

另外,爲什麼在每行都是數據綁定之後迭代整個行集合,而不是隻在新綁定的行上工作? –

+0

一個簡單的解決方案是取消foreach指令,在剩下的代碼中用e.Row替換gr –

回答

5

你不必線圈列在RowDataBound事件,您可以只使用e對象引用每一行

protected void grdviewCases_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      if (e.Row.Cells[14].Text != " ") 
      { 
       e.Row.Cells[14].BackColor = Color.Red; ; 
       e.Row.Cells[14].ForeColor = Color.WhiteSmoke; 
      } 
     } 
    } 

有關詳情,請system.web.ui.webcontrols.gridview.rowdatabound

相關問題