在datatable里有一字段是"标记"用来记录某条记录是否被处理过。
在datagridview里这一列是不会被显示出来的;
我想让这个有标记的记录在datagridview里根据"标记"的内容(值0或1)以红色(或其它颜色)显示,如何设置?
整行变色或其中的几列变色。

解决方案 »

  1.   

    是啊,我也碰到这种问题,之前在ASP写的时候就直接是循环装入表格时去判断,比如有些信息需要核对的就显示一个核对,已核对的就为空,但现在在GridView或其它表格控件中都不知道如何处理
      

  2.   

    估计得自己写代码判断以前没遇见过。
    用delph做C/S开发时遇到过,呵呵,比在B/S中简单多了。
      

  3.   

    放到paint事件,并遍历来设置颜色
            private void dg1_Paint(object sender, PaintEventArgs e)
            {
                for (int i = 0; i < dg1.Rows.Count; i++)
                {
                      if(....)                   dg1.Rows[i].DefaultCellStyle.BackColor = Color.Yellow;
                }
            }
      

  4.   

        protected void gridviewid_RowDataBound(object sender, GridViewRowEventArgs e)
        {
                  if (e.Row.RowType == DataControlRowType.DataRow)
            {
               //control id 是标记列, 我们用hiddenfiled把它放在gridview中
              //依 value 值来决定单元格的颜色,1,红色;
                if ((( HiddenField ) e.Row .FindControl(string ID)).Value .ToString ()=='1')
                {
                   e.Row.ForeColor = System.Drawing.ColorTranslator.FromHtml("#770077");
                }
            }
        }
      

  5.   

    private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e.RowIndex >= -1)
        {
            if (dataGridView1.Rows[e.RowIndex].Cells["RowId"].Value != null)
            {
                int v = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["RowId"].Value);
                if (v %2 == 0)  // 偶数行
                {
                    e.CellStyle.BackColor = SystemColors.Info;
                }
                else
                {
                    e.CellStyle.BackColor = ControlPaint.LightLight(Color.Yellow);
                }
            }
        }
    }
      

  6.   

    加一个隐藏列,记录是否被处理过,再在CellFormatting事件里加以处理