2008-09-11 5 views
2

데이터베이스에서 테이블을 읽는 응용 프로그램이 있습니다.데이터베이스에 의해 구동되는 개체를 작성하여 트 리뷰를 채우기 - 매우 느림

결과에서 수집 한 고유 한 문자열 값을 기반으로 결과 집합을 가져 오기 위해 SQL 쿼리를 실행하고 케이스/스위치 문을 사용하여 특정 개체를 생성합니다 (TreeNode BTW를 상속 함). 이러한 생성 된 객체는 나중에 사용할 사전 객체로 분리됩니다.

이러한 개체를 생성하는 동안 결과 집합의 값 중 일부를 사용하여 개체의 값을 채터를 통해 채 웁니다.

특정 개체 유형을 반환하고 트리 뷰를 채우기 위해 사전을 쿼리합니다. 그러나 Dictionary 객체의 트리 뷰에 동일한 유형의 객체 2 개를 채울 수는 없습니다 (런타임 오류가 발생합니다 - 현재 나를 이스케이프 처리하고, 동일한 객체를 참조하는 것이 좋습니다). 그래서 내가해야 할 일은 memberwiseClone을 사용하고 IClonable을 구현하여이 문제를 해결하는 것입니다.

내가이 일을 제대로하고 있습니까? 더 좋은 방법이 있습니까? 왜냐하면 이것이 내 프로그램이 현 시점에서 느리게 진행되는 원인으로 생각하기 때문입니다. 최소한 나는 그것보다 조금 더 clunky - 나를 아는 사람들의 충고 - 크게 감사한다고 생각합니다.

답변

1

@Brad에 추가하려면 필요에 따라 트리를 채 웁니다. 이는 트리 노드의 확장 이벤트에 연결하는 것을 의미합니다. 이는 네트워크 공유를 처리 할 때 Windows 탐색기가 작동하는 것과 유사합니다.

트리에서 실제 트리 노드 당 1 TreeNode 개체가 있어야합니다. 다시 사용하지 마십시오. Tag 속성 (권장되는 방법)을 사용하여 데이터와 연결할 수도 있고 TreeNode 자체를 하위 클래스로 만들 수도 있습니다 (Java 메서드이지만 .NET에서는 적게 사용합니다).

은 (복제 방법의 사용은 일반적으로 당신이있어 하나의 (a) 뭔가 잘못하고, 또는 (b)는 불변에서 변경 가능한 객체를 분리하는 도메인 모델을 고려 할 필요가 힌트입니다.)

2

외부 사전을 사용하는 이유가 있습니까? 데이터를 쿼리 할 때 트리를 직접 채 웁니다.

사전이 필요한 경우 트리 노드의 .Tag 속성을 사전의 데이터를 가리 키도록 설정할 수 있습니다.

0

당신이 사용자가 실제로보고 싶어하는 노드 만로드하는 가상 트리보기를 사용하여 고려했습니다. - www.infralution.com의 구성 요소로 성공했습니다.

관련 문제