将数据从XML导入DataGridView

时间:2014-10-16 19:09:53

标签: c# .net datagridview

我正在从XML文档导入数据以填充DataGridView。在导入过程中,我改变了一些单元格的背景颜色。但是,当我添加行时,单元格的颜色没有正确更新(我得到一个灰色单元格)。我不确定是否有一个地方我应该使DataGridView无效以使单元格正确显示。

我应该提一下,我的DataGridView不是数据绑定。

一些参考代码:

DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone();

for(int j = 0; j < dataGridView1.ColumnCount; ++j)
{
   if(j == 2)
   {
      row.Cells[j + 1].Style.BackColor = layer.Color;
   }
}
this.dataGridView1.Rows.AddRange(row);

1 个答案:

答案 0 :(得分:1)

您可能希望覆盖CellFormatting或RowPostPaint事件并在那里执行。

我认为在尝试为DataGridView着色时遇到了同样的问题,这就是我解决它的方法。

private void gridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
    foreach (DataGridViewRow row in gridView.Rows)
        if (row.Cells["Status"].Value.ToString() == "Posted")
            if (row.Cells["Priority"].Value.ToString() == "High")
                foreach (DataGridViewCell cell in row.Cells)
                    cell.Style.BackColor = Color.LightPink;
            else
                foreach (DataGridViewCell cell in row.Cells)
                    cell.Style.BackColor = Color.Yellow;
}

CellFormatting:

private void gridItems_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.CellStyle.BackColor != Color.Yellow && e.CellStyle.BackColor != Color.LightPink)
        e.CellStyle.BackColor = Color.LightGreen;
}

我希望这有帮助!