2012-04-09 42 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事件來完成此操作。不要忘記專門設置爲白色的默認顏色,所以它不會保持過時的顏色。

相關問題