Windows Forms 응용 프로그램에서 작업 중이며 데이터베이스에서 찾은 모든 사용자를 나열하는 표보기가 있습니다. 데이터베이스는 다음과 같습니다DataGridView에서 추가 단추를 클릭하여 행 추가
테이블 사용자
테이블 권한 이제
, 모든 사용자는 등 하나의 관리자와 같은 권한, 또는 사용자를 가질 수 있습니다,하지만 난 별도의에서이 정보를 유지 표와 외래 키 제약 조건을 정의하여 최종 사용자가 잘못된 권한을 가진 사용자를 삽입 할 수없고 Privileges 테이블에있는 사용자 만 삽입 할 수 있습니다.
그런데 Entity Framework를 사용하고 있으며 Database First 메서드를 사용하여 Model 개체를 만들었습니다. 하지만 이것은 아마도 질문/답변에 영향을 미치지 않을 것입니다. 왜냐하면 제가 물어 보려는 것의 논리는 데이터베이스의 데이터를 어떻게 조작하든 관계없이 동일 할 것이기 때문입니다.
그래서 지금은 두 개의 바인딩 소스가 있습니다. 하나는 userBidningSource
이고 다른 하나는 privilegesBindingSource
입니다. 사용자 모델에는 권한에 대한 탐색 속성이 있고 그 반대의 경우도 있습니다 (EF가 생성 함). 지금은 이런 식으로 내 양식에 데이터 소스 메뉴에서 사용자 데이터 소스를 드래그하고, (내 양식 부하에서) 일부 코드를 작성했습니다 :
try{
context.user.Load();
this.userBindingSource.DataSource = context.user.Local.ToBindingList();
}catch(Exception ex){
Debug.Write(ex);
}
지금이 작품 (아마 모든 코드를 추가 잊었지만 지금까지 모든 것이 작동 함) 사용자 테이블의 모든 열을 가진 모든 사용자의 목록을 얻었습니다.
안전하지 않아 최종 사용자에게 어떤 privilege_id 필드를 입력해야 할지를 추측하거나 추측 할 수 없으므로 필자는 해당 열의 표보기에서 콤보 박스를 만들었습니다. 권한 데이터 소스에 (오른쪽 그리드보기를 클릭 한 다음 열 편집) 디자이너에서이 칼럼의
context.privileges.Load();
this.privilegesBindingSource.DataSource = context.user.Local.ToBindingList();
또한 내가 설정 한 데이터 소스 :
그래서 난 내 코드에서 이런 일을 추가했다.이제 모든 드롭 다운이 채워집니다.
문제점
마지막으로, 문제 ... 바로 지금, 내가 새 행을 추가하려합니다. 내가 그리드 뷰의 + 아이콘을 클릭하면 그래서, 난라는 오류 얻을 : ". DataGridViewComboBoxCell 값이 유효하지 않습니다 이 대화창 DataError 이벤트를 처리하시기 바랍니다이 기본값을 바꾸려면."
을
문제는 현재 설정으로 행을 추가하는 방법입니다. 내가 뭘 잘못하고 있니?
이제 해결되었습니다. 설명해 주시겠습니까? – Whirlwind
https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.dataerror(v=vs.110).aspx. 이 문서를 참조하십시오. 도움이 될지 모르겠다. –