퇴근5분전

 프리단가도... 이런건 정직들시켜서 했음 좋겠다...

 

C1FlexGrid가 꾀 예전 버젼이고 Winform 컨트롤이다.

 

 이 그리드를 이용해서 트리를 만들고 간단하게 트리 노드들을 관리하도록 만들기 위해

방법을 하나 생각하고 개발에 들어갔다.

 

트리는 굉장히 쉽게 만들어진다.

 fxGrid.Tree.Column = 컬럼 인덱스;

 

각 Row별로 레벨값만 주면

 Row r = fxGrid.Rows[ rowIndex ];

 r.IsNode = true;

 r.Node.Level = 레벨값;

 

그런데 이 트리에 입력값과 level값 핸들링 상하 이동처리가 번거롭다.

기존 방식으로 1개의 Row를 등록하고 상위 코드를 따다가 적재하고 자기 코드 생성하고... 등등... 귀찮다.

 

엑셀이나 메모장으로 데이타 대상을 몽땅 복사해서 그리드에 붙여넣기를 한다.

 

그리고 조정이 필요한 행들을 선택해서 Ctrl + {왼쪽, 오른쪽} 은 level을 앞 뒤로 조정해주고,

Ctrl + {위, 아래} 는 Row를 위로 아래로 이동시켜준다.

 

이때 필요한 것이!!! 전체 노드에 대하여 코드와 상위코드에 대한 정보 업데이트이다.

 

처음에 성공했다고 생각했는데... 자세히 코드를 보니 코드들이 어긋나있었다.

 

그래서 오후 내내 3시간 삽질을 했는데 ... 안되서 스트레스만 받고 퇴근!

 

지하철에서도 알고리즘을 고민해봤는데... 안되서 ㅠㅠ;

 

7시 반에 와서 9시반에 성공했으니 나름 2시간 동안 고생한 보람은 있네.

 

가장 중요한 힌트가 된 것은 스택이란 자료구조!

 

*** 작업 전 고려했던 내용.

 - 기존에 내 프레임웍 코드에 사용했던 메뉴 트리처럼 생각하고 시작했었음.

      #메뉴1lv

      ##메뉴2lv

      ###메뉴3lv   ( cd, ucd 관련해서 알고리즘 고려를 못한것이 스트레스의 발단이 됨... )

 - 다수의 일괄 편집!

 - 관리의 편의성! ( 새 노드 추가, 삭제, 이동 등... )

 - 나이스에서 했던 메뉴관리 트리 처럼 생각... ( 컨트롤 제작회사가 달라서 그런지 완전 다름 )

 

### 최초 상태 Level +를 누르면 CD와 UCD를 지정된 포멧으로 생성해준다.

 

### 트리 구조로 바꾼 결과

 

생성되는 코드를 포멧을 지정해서 만들 수 있다는 장점.

 

한번에 여러건의 입력이 가능하다는 장점.

 

단점. 많은 양에 대해 안해봐서 퍼포먼스를 예측 할 수가 없다는 것. ( 해봐야 알듯함: 출근하면 5만건 정도 생성해서 해봐야 겠음. )