2013-04-22 9 views
0

내 datagridview에는 2 개의 열이 있습니다. 열 0에 체크 표시가 꺼짐 위치에 있습니다 (기본값). 사용자는 상자를 클릭하여 상태를 변경하거나 확인을 클릭 할 수 있습니다.DataGridview의 셀을 확인하는 방법은 무엇입니까?

루프를 통해 확인 된 항목을 어떻게 찾을 수 있습니까?

List<DataGridViewRow> list = DataGridView1.Rows.Cast<DataGridViewRow>().Where(k => Convert.ToBoolean(k.Cells[CheckBoxColumn1.Name].Value) == true).ToList(); 

당신에게 확인 확인란이있는 모든 행의 목록을 제공합니다 : 여기

try 
{ 
    // This line will cause InvalidCastException 
    // Specified cast is not valid. 
    if ((bool)(row.Cells[0]).Value || (CheckState)row.Cells[0].Value == CheckState.Checked) 
    { 
     // Do something 
     MessageBox.Show("Checked"); 
    } 
} 
catch (NullReferenceException nre) 
{ 
    MessageBox.Show("No Rows Have Been Checked"); 
} 

답변

1

무엇에 대해 :

foreach(DataGridViewRow row in dataGridView.Rows){ 
    if (row.Cells[0].Value != null && (bool)row.Cells[0].Value){ 
     //checked, do something 
    } 
} 
+0

나는 이것을 테스트했다. 나는 1 -> 10의 숫자를 가진 세포를 가지고있다. 나는 1,2,3을 확인한 다음 새 목록을 작성하여 목록에 추가했다. 내 새 목록에는 1,2 개만 포함되었습니다. 3 was missing –

+0

내 질문에 만든 편집 InvalidCastException이 발생합니다. –

+0

상태 값을 단어로 변경하면 루프를 입력하지 않습니다. –

1

this answer에서 한 줄을 참조하십시오 내 코드입니다.

+0

CheckBoxColumn1.Name,이 열 또는 실제 이름의 인덱스인가? –

+0

그게 열의 이름입니다. – Geoff

+0

그런 식으로 목록을 사용한 적이 없습니다. 1 행을 사용하여 선택한 모든 행을 얻고 선택된 행을 사용하는 쉬운 방법은 datagridview의 새로운 데이터 소스입니다 (따라서 검사 된 행만 표시). –

관련 문제