2013-03-17 1 views
0

이 테이블에 StatusId라는 열이있는 데이터 테이블 (작업)이 있습니다. 다른 datatable (jobStatus) 있습니다. 작업 테이블에는 1 개의 작업 레코드가 있고 jobstatus 테이블에는 모든 작업 상태가 있습니다.콤보 상자 목록의 데이터 새로 고침

내 winforms 양식에 작업 기록이 표시되고 작업 상태가 jobstatus 테이블의 내용을 표시하는 콤보 상자입니다. List 부분 (DisplayMember)은 jobstatus 테이블에 바인딩되고 데이터 부분은 jobs 테이블에 바인딩됩니다. (ValueMember) 그래서 모두 잘 작동하고 내 작업을 선택하고 표시 할 때 콤보 상자는 각각의 작업 상태를 선택합니다 ... 좋습니다.

이제 더 많은 작업 상태 레코드를 추가 할 수있는 다른 양식 (JobStatus)이 있습니다. 그래서 내가 직업 기록을 입력/변경하는 동안 다른 직업 상태가 필요하다는 것을 알았 기 때문에 직업 상태 양식으로 이동하여 새로운 상태로 들어갑니다. 그런 다음 작업 양식으로 돌아가서 이제는 콤보 상자에서 새 작업 상태를 선택할 수 있기를 원합니다.

내 질문은 새 레코드가 추가되거나 다른 양식에 콤보 상자를 채우는 데 사용되는 조회 스타일 목록에 편집 된이 시나리오에 가장 적합한 방법입니다. 양식 깜박임을 제외하고 작동하는 양식의 정품 인증 이벤트에 코드를 넣으려고했는데 추한 것 같습니다.

어떤 아이디어 ???

나는 당신이 말한 것을 실제로하고 있었기 때문에 코드에서 조금 더 가까이 보였습니다. 문제는 내가 코드의 라인을 처리하는 순서, 그리고 내가 발견하는 경우 여기

이전 코드

cboCustomer.DataSource = Business.Contact.GetContact(Enums.ContactType.Customer).Tables[0]; 
      sorted = ((DataTable) cboCustomer.DataSource).DefaultView; 
      sorted.Sort = "Name ASC"; 

새로운 코드 마법처럼

DataView dv = Business.Contact.GetContact(Enums.ContactType.Customer).Tables[0].DefaultView; 
      dv.Sort = "Name ASC"; 
      DataTable dt = dv.ToTable(); 
      cboCustomer.DataSource = dt; 

작품. 건배를위한 도움

답변

1

문제없이 Activated 이벤트를 사용할 수 있어야합니다. 당신은 같은 형태가 활성화되지 않았을 때 폼의 데이터의 변경에 따라 양식의 내용을 업데이트하는 등의 작업을 위해이 이벤트를 사용할 수 있습니다

: 즉 the documentation 좋은 말합니다도거야.

물론 부모 양식에서이 이벤트를 구독하면 위양성이 약간 떨어집니다. 사용자가 양식으로 전환하여 콤보 상자 컨트롤을 사용하려고 시도하지 않은 경우를 생각해보십시오. 큰 문제는 아니지만이 경우 콤보 상자를 아무 이유없이 업데이트해야합니다. 콤보 상자 컨트롤에 대해 Enter event을 처리하도록 전환하면 쉽게 해결할 수 있습니다. 이 컨트롤은 특정 컨트롤이 포커스를받을 때만 발생합니다. Enter 이벤트의 유일한 제한은이 이벤트 핸들러 내부에서 포커스가있는 컨트롤을 변경할 수 없다는 것입니다.하지만 어쨌든 그렇게하고 싶지는 않습니다.

이제 우리는 깜박임 문제에 대한 수정이 필요합니다. 나는 당신이 즐겁게 간단하다고 생각합니다. 콤보 상자 업데이트를 시작하기 전에 이벤트 처리기 메서드의 시작 부분 (사용하는 것에 관계없이)에서 BeginUpdate method을 호출하십시오. 이렇게하면 컨트롤이 업데이트되는 동안 컨트롤이 깜박 거리는 것을 방지 할 수 있습니다 (그림을 숨김으로써). 마지막으로 EndUpdate으로 전화를 걸어 끝내야합니다. 그러면 그림을 다시 사용하고 변경 사항을 반영하기 위해 다시 칠할 수 있습니다.

난 그냥 내 자신을 테스트하고, 나는 깜박임을 볼 수 없습니다. 컨트롤이 변경 사항을 반영하기 위해 다시 칠되는 동안 가장 많이 얻을 수있는 것은 깜박입니다. 분명히, 당신은 그것보다 더 잘할 수 없습니다.

+0

위의 건배에 대한 답변 – trailerman