2012-08-16 4 views
1

WinForms 응용 프로그램에서 datagridview를 사용하고 있으며 모든 열 막대를 편집 할 수 없도록 잠급니다. 이것은 나는 다음과 같은 코드를 달성 할 수 있었다 :DataGridView의 열 및 행만 읽기 전용

foreach (DataGridViewColumn col in myGrid.Columns) 
{ 
    if (col.Name == "LockedColumn") 
    { 
     col.ReadOnly = false; 
    } 
    else 
    { 
     col.ReadOnly = true; 
    } 
} 

그러나 나는 또한 다른 곳에서 각 행의 값에 따라,이 칼럼에서 조건부 잠금이 필요합니다. 다음 코드를 시도 :

foreach (DataGridViewRow row in myGrid.Rows) 
{ 
    if ((bool)row.Cells["ConditionalColumn"].Value == false) 
    { 
     row.ReadOnly = false; 
    } 
    else 
    { 
     row.ReadOnly = true; 
    } 
}  

그러나 이것은 내가 원하지 않는 전체 눈금을 잠급니다. 내가 쓴 것은 테이블 예제로 더 명확해질 수 있습니다.

콜라 COLB COLC

ROW1 진정한 값 1

ROW2 거짓 값 2

row3 사실 VALUE3 내가 열에게 & B 잠금 (읽기 전용) 전체가, 그리고 기본을 원하는

열 B의 값이 false 인 경우를 제외하고는 Col C가 편집을 허용합니다. 따라서 위 예제에서 value1과 value3 만 편집 가능합니다.

그러나 위에서 설명한 바와 같이 읽기 전용을 false로 설정하는 조건으로 행을 반복하면 모든 결과가 잠겨 있기 때문에이를 달성 할 수 없습니다.

+0

이 코드가 프로젝트의 실제 코드입니까? DataGridview 셀을 bool로 형 변환 할 수 없으므로이 코드는 컴파일되지 않아야합니다. 또한 문제가 무엇인지는 분명하지 않습니다. 당신은 행을 읽기 전용으로 설정할 때 전체 그리드가 읽기 전용이된다는 말입니까? 이것은 일어나지 않습니다. –

+0

왜 모든 가격 인하가 - 왜 내 질문에 잘못 되었습니까? – PJW

+0

나는 downvote하지 않았다 - 놀라는 사람들이 있지만, 아마도 컴파일되지 않은 코드가 이유였다. 잘하면 당신이 프로젝트에서 실제 코드를 게시하면 사람들은 downvotes를 제거합니다. –

답변

0

그것은이었다 다음 줄을이었다 문제는

row.ReadOnly = false; 

이 같은 intende 작동

row.Cells["colName"].ReadOnly = false; 

로 변경하는 경우 d

2

표시 한 코드는 컴파일하지 않아야하며 부울 셀 내의 값을 DataGridView에 올바르게 검사하지 않아야합니다.

다음 개별 행을 설정 할 수 있어야한다 아래의 코드처럼 뭔가에 행을보고 코드를 변경하는 경우

에만 열을 기준으로 읽으려면 :

foreach (DataGridViewRow row in myGrid.Rows) 
{ 
    if (row.Cells["ConditionalColumn"].Value == null || (bool)row.Cells["ConditionalColumn"].Value == false) 
    { 
     row.ReadOnly = false; 
    } 
    else 
    { 
     row.ReadOnly = true; 
    } 
}