2012-04-09 70 views
1

我正在写一个查看器,使用datagridview加载一个文本文件并显示一个m行x n列表(该表可由用户编辑)。如何将datatable的索引映射到datagridview的rowId?

这个观看者的主要目的是改变最大的背景色中的每一列于红,和每一列的分钟〜绿色,并且还超过某一阈值到粉红色的细胞。 (我使用一个按钮来触发checkMinMax()方法,它遍历dataTable的每列以提取最小/最大/超过行的列表)

我能够做到这一点当我第一次加载数据数据表。然而,当我排序datagridview并再次调用checkMinMax()时,颜色仍旧固定在旧位置。

public void setCellBackColor (List<int> rows, int col, Color color) 
{ 
    foreach (int row in rows) 
    { 
     dataGridView_data.Rows[row].Cells[col].Style.BackColor = color; 
    } 
} 

我知道我现在用的数据表,而不是在DataGridView的ROWID的索引。所以我的问题是,如果有一种方法将我的数据表的索引映射到rowId?

还是有更好的方法来做我想做的事吗?

+0

您拥有的代码'List col'和'Color col'具有相同的名称,并且在每个循环中,正在使用col(假设列表),但不需要单个整数,而不是在这里列表?我猜这只是伪代码给一个想法,你在做什么? – Matt 2012-04-09 02:31:17

+0

烨,它只是一个伪代码。是的,你说得对,列只是诠释,而不是一个列表。我会更新的代码。 – 2012-04-09 02:49:59

回答

1

在对数据进行排序后,只需调用您的setCellBackColumn即可。行突出显示不是动态的,所以你必须记住它。您可以使用网格的Sorted事件来完成此操作。不要忘记专门设置为白色的默认颜色,所以它不会保持过时的颜色。

相关问题