2015-10-10 53 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

相关问题