【问题标题】:Why foreach loop fails at last row of gridview?为什么foreach循环在gridview的最后一行失败?
【发布时间】:2016-01-08 03:41:02
【问题描述】:

如果单元格的文本 != "nbsp;"它确实有效,除了最后一行。即使它不等于“nbsp;”,它也不会为最后一行着色

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

【问题讨论】:

  • 可能只有在 RowDataBound 事件发生后,新行才会添加到 Rows 集合中。我会先检查一下。
  • 另外,为什么在每行数据绑定后遍历整个行集合而不只对新绑定的行起作用?
  • 一个简单的解决方案是消除 foreach 指令,并将剩余代码中的 gr 替换为 e.Row

标签: c# asp.net visual-studio gridview


【解决方案1】:

你不需要在 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

【讨论】:

    猜你喜欢
    • 2013-08-03
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多