如何在不更改所有行的情况下有条件地格式化网格视图中绑定列的单元格中的文本

How can I conditionally format the text in a cell of a bound column within a grid view without all rows changing

我正在从 SQL 数据库中获取一些列,并使用它们来填充具有绑定列的 gridview。一些列包含日期项。

我正在尝试遍历列中的每个单元格并根据今天的日期测试输入的日期。如果日期匹配,则单元格文本应显示为 "Complete",如果不匹配,则应显示为 "Not Complete".

我遇到的问题是,当测试它们是否匹配时,我可以更改那些匹配的文本,但是当进入 else 语句以更改其余部分时,所有单元格都会更改。我已经尝试了明确的 if、else if 以及颠倒测试顺序。我最初的想法是,单元格正在根据需要进行更改,但在第二次测试中,每一行都被再次循环,但所有行都在 foreach 循环内。

 protected void equipmentGV_RowDataBound(object sender, GridViewRowEventArgs e)
    {
  
        foreach (GridViewRow row in equipmentGV.Rows)
        {

            if (row.Cells[1].Text == DateTime.Today.ToString())
            {
                row.Cells[1].Text = "Complete";
            }
            else { row.Cells[1].Text = "Not Complete"; }
        }

上面的结果是第二列中的所有单元格 == "Not Complete",即使那些日期是今天的单元格,但是当删除 else 语句时,今天的条目显示 "Complete" 根据需要。

theGleep 的以下回答确实解决了我的问题

"You don't need to iterate all the rows every time. e.row contains the row that has just been bound. So you can remove the "for" 部分。我不知道这是否修复了它,但您的代码会 运行 更快 :) "