是否有基于行数据对行进行着色的最佳实践方法?我目前有这个:
if (dt.Rows.Count > 0)
{
//Finally Add DataTable into DataGridView
dataGridView1.DataSource = dt;
dataGridView1.Columns["File_Name"].Width = 240;
dataGridView1.Columns["Create_Date"].Width = 130;
//dataGridView1.Sort(dataGridView1.Columns["Create_Date"], ListSortDirection.Descending);
dataGridView1.Rows[0].Cells[0].Selected = false;
for (int y = 0; y < unreadList.Count; y++)
{
if ( unreadList[y] == 1 )
dataGridView1.Rows[y].DefaultCellStyle.BackColor = Color.LightPink;
}
}
为了澄清,unreadList
是一个数组,其中1
表示该索引与该行索引上的某个字符串匹配。
但是当使用RowFilter
等时,颜色会消失。有没有什么可以处理这个,包括列是否排序?我的索引方法在排序之后也不起作用。
答案 0 :(得分:0)
您可以在CellFormatting / RowPostPaint事件中进行着色,以便在过滤/排序后保持着色。
private void gridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
for (int y = 0; y < unreadList.Count; y++)
{
if (unreadList[y] == 1)
dataGridView1.Rows[y].DefaultCellStyle.BackColor = Color.LightPink;
}
}
private void gridItems_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.CellStyle.BackColor != Color.LightPink) //This will color every other row green - as an example.
e.CellStyle.BackColor = Color.LightGreen;
}