관리 메뉴

KorSA

트리 구조의 DataSource를 두 UI 컴포넌트에 연결할 때 본문

Development Experience/C#

트리 구조의 DataSource를 두 UI 컴포넌트에 연결할 때

Praiv. 2020. 11. 30. 19:44
320x100

회사 프로젝트를 수행하던 중 트리 구조의 자료 구조에서 depth 1의 노드들 따로, depth 2의 노드들 따로 두 개의 UI 컴포넌트에 각각 바인딩할 일이 있었다. 나는 별 고민없이 DropDownList 의 DataSource에 depth 1의 노드들을 바인딩하였고, GridView의 dataSource에는 depth 2의 노드들을 바인딩하였다. depth 1 의 노드들과 depth 2의 노드들은 모두 한 Instance 안에 존재하였다.

 

초반엔 문제가 없었는데, GridView의 DataSource만 따로 조작해야 할 상황이 생기자 문제가 발생하였다. 나는 GridView에서만 Refresh를 하고 싶었는데, depth 2의 노드들을 Refresh 하고 나니 DropDownList에 바인딩되었던 depth 1의 노드들도 함께 Refresh가 되는 것이었다. 

 

문제는 하나의 Instance를 두 개의 UI Component가 공유해서 사용하기 때문에 발생한 문제였다. 그래서 나는 약간의 메모리 비효율을 가져오더라도 원래 쓰고 있던 Instance의 Clone 객체를 만들어서 DropDownList 컴포넌트와 GridView 컴포넌트 각각에게 바인딩을 시켜 주었다. 그러고 나니, 각 UI Component 들은 내가 원하는 로직대로 동작하였다.

다만, 마지막에 데이터를 저장할 때에는 두개로 나뉘어졌던 Instance의 정보들을 하나의 Instance로 합쳐서 저장해야 했다.

728x90
728x90
Comments