2012-04-09 7 views
1

텍스트 파일을로드하고 m 행 x n 열 테이블을 표시하려면 datagridview를 사용하여 뷰어를 작성하고 있습니다 (이 테이블은 사용자가 편집 할 수 있습니다).datagridview의 rowId에 datatable의 인덱스를 매핑하는 방법은 무엇입니까?

이 뷰어의 주요 목적은 각 열의 최대 값을 빨간색으로, 각 열의 최소값을 초록색으로 변경하고 특정 임계 값을 초과하는 셀을 분홍색으로 변경하는 것입니다. (버튼을 사용하여 dataTable의 각 열을 반복하여 checkMinMax() 메서드를 트리거하여 최소/최대/초과에 대한 행 목록 추출)

데이터를 처음로드 할 때이 작업을 수행 할 수 있습니다. 데이터 테이블 그러나, 내가 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 대신 datatable의 색인을 사용하고 있음을 알고 있습니다. 그래서 내 질문에 거기에 내 datatable의 색인을 rowId에 매핑하는 방법이 있다면 무엇입니까?

또는 내가하고 싶은 것을하기위한 더 좋은 방법이 있습니까?

+0

'List col'과'Color col' 코드는 같은 이름을 가지고 있습니다. 각 루프마다 col이 사용됩니다 (목록 가정).하지만 정수가 필요하지는 않습니다. 여기 목록 있니? 나는 이것이 당신이하고있는 일에 대한 생각을주기위한 의사 코드 일 뿐이라고 추측하고 있습니다. – Matt

+0

예, 단지 의사 코드 일뿐입니다. 네, 맞습니다. 열은 목록 대신 int입니다. 나는 코드를 업데이트 할 것이다. –

답변

1

데이터를 정렬 한 후 setCellBackColumn을 불러주십시오. 행 강조 표시는 동적이 아니므로 다시 호출해야합니다. 그리드의 Sorted 이벤트를 사용하면됩니다. 기본 색상을 흰색으로 설정하여 오래된 색상을 유지하지 않도록하는 것을 잊지 마십시오.

관련 문제