2016-07-06 2 views
1

나는 dataTable.Load(sqlDataReader)을 호출 중이며 열 2 개가 자동으로 dataTable에 ReadOnly으로 설정됩니다. 나머지 열은 편집 가능합니다. 나는이 속성을 편집 할 수 있다는 것을 알고 있지만, 무엇을 ReadOnly으로 설정할지 어떻게 결정하는지 궁금합니다.DataTable을 채울 때 SqlDataReader가 열을 ReadOnly로 설정할지 여부를 어떻게 결정합니까?

열 중 하나가 테이블의 기본 키이고 다른 하나는 Bit입니다. Bit 열에 SQL Server의 기본 제약 조건이 있지만 그게 전부입니다. 그것을 호출하는 데 사용하는 쿼리는 열을 INT으로 변환합니다. 컬럼을 읽기 전용으로 만들기 위해 SQL 쿼리를 편집 할 수있는 방법이 있는지 궁금합니다.

답변

0

열 세부 정보를 지정하여 질문에 답변했습니다.

내 가정은 DataTable이 행/열 등을 업데이트, 삽입, 삭제할 수있는 방식으로 생성된다는 것입니다. 따라서 DataTable 이외의 리소스에서 처리되거나 계산되는 것은 아마 읽혀질 것입니다 만.

그래서 기본 키 열은 데이터베이스가 키를 할당한다는 의미의 IDENTITY 열이므로 사용자가 직접 값을 추가하고 싶지 않습니다. 따라서 읽기 전용으로 표시됩니다.

다음 열은 열이 기본값이므로 다음 열은 아닐 것입니다. 기술적으로는 비트 열을 포함하지 않지만 비트 열을 기반으로 계산 된 열을 포함하고 있기 때문입니다. 따라서 포함하는 열은 실제로 기본 테이블에 존재하지 않으므로 .net은 열의 데이터를 변경할 수 없습니다 .....

+0

그래, PK는 읽기 전용이지만 변환 된 값은 자동으로 읽기 전용이되기를 원하지 않습니다. 나는 내 varchars를 varchars로 변환하고 읽기 전용이되는 것을 지켜 보았습니다. 너는 그걸 막을 방법을 몰랐을거야? – user1427105

+0

질문을하는 이유는 무엇입니까? 그렇다면 읽기 전용이 아닌 경우, 기본 테이블을 업데이트/삽입하기 위해 변환을 어떻게 다시 매핑해야합니까? 두 번째 질문은 읽기 전용으로 표시되는 이유입니다. 사용자 정의 비즈니스 로직을 구현하고 명령을 업데이트/삽입해야합니다. – Matt

+0

비트가 DataGrid의 체크 박스가되어 버렸기 때문에 그것을 변환하려고했는데 그게 내가 찾던 것이 아니 었습니다. 그것은 왕복 여행에서 내 업데이트/삽입 작업을하지 못하게되었습니다. 나에게 접근 방식을 바꾸어서 더 많은 통제권을 부여하는 다른 길로 올라 섰다. – user1427105

관련 문제