! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

treeview를 2개로 나누어 사용할때 노드 추가시 오류가 발생되어 문의드립니다. > Q&A | 토론

본문 바로가기

ReactJS treeview를 2개로 나누어 사용할때 노드 추가시 오류가 발생되어 문의드립니다.

페이지 정보

작성자 아이지니 작성일 2022-09-22 17:35 조회 1,057회 댓글 0건
제품 버전 : 5.20211.781
컨트롤 이름 : treeview를 2개로 나누어서 노드 추가하고싶습니다.

본문

첨부파일

트리뷰를 2개로 나누어서 사용하고 싶습니다.


첫번째 트리뷰에 노드를 클릭하면 두번째 트리뷰에 클릭한 노드의 자식(detail) 값이 나오도록 하고 

두번째 트리뷰에 노드를 추가할 수 있게 수정하고싶습니다.


첫번째 트리뷰에 노드의 자식(detail) 값이 없을 경우 두번째 트리뷰에서 노드 추가시 오류가 발생합니다.

예시로 소스 하나를 만들어 첨부하였습니다.

확인부탁드립니다.


오류 부분 : control.selectedNode = control.addChildNode(index, newItem);

에러 : TypeError

Cannot read properties of undefined (reading 'element')


data : [

{id:1, name:'test1', detail : [{ parentId : 1 , id:11, name: 'test1-1'}, { parentId : 1 , id:12, name: 'test1-2'}]},

{id:2, name:'test2'}

]


  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

3 답변

ReactJS Re: treeview를 2개로 나누어 사용할때 노드 추가시 오류가 발생되어 문의드립니다.

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK다이애나 작성일 2022-09-23 11:15 댓글 0건

본문

안녕하세요 그레이프시티입니다.


전달해주신 '트리뷰 예시.txt' 첨부 파일을 확인해 본 결과, 두 번째 TreeView 컨트롤에 지정된 initialized 이벤트로 인해 this._control 변수에 두 번째 TreeView 컨트롤의 인스턴스가 오버라이딩 되어 나타나는 오류로 확인 됩니다.

TreeView 컨트롤에 자식 노드를 추가 할 시, this._control 변수에 저장된 컨트롤의 인스턴스 값을 이용하여 컨트롤의 selectedNode 속성 값을 불러와 새로운 자식 노드를 추가 하게 됩니다. 

이때, 컨트롤의 selectedNode 속성 값이 undefined 인 경우 addChildNode 메서드를 통해 추가될 노드의 부모 노드의 위치를 찾지 못하여 오류가 발생한 것으로 보입니다.

두 번째 TreeView 컨트롤의 initialized 이벤트를 새로이 지정해 저장한 해당 컨트롤의 인스턴스 값을 이용하여 오류를 해결 할 수 있습니다.

아래의 샘플을 참고해 보시기 바랍니다.


- 노드 추가 (React)


API 문서를 공유드리며 다른 궁금한 점이 생기면, 문의 주시기 바랍니다.


감사합니다.


그레이프시티 드림

댓글목록

등록된 댓글이 없습니다.

ReactJS Re: treeview를 2개로 나누어 사용할때 노드 추가시 오류가 발생되어 문의드립니다.

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 아이지니 작성일 2022-09-23 15:10 댓글 2건

본문

안녕하세요.

말씀하신 대로 두 번째 TreeView 컨트롤의 initialized 이벤트를 수정해서 실행했는데 오류가 나서 샘플 주신것을 확인해보았습니다.


제가 원했던것은 첫번째 TreeVIew에 자식노드까지 다 나오는 것이 아니라 

첫번째 TreeView의 노드를 클릭하면 클릭한 노드의 자식노드(items)가 

두번째 TreeView로 나오도록 만들고 싶었는데 샘플은 조금 다르더라구요.


달라도 확인하는데는 문제가 없어서 테스트를 해보았는데

첫번째 TreeView의 노드 중 Parent3클릭 후 자식노드를 추가하면 

두번째 TreeView에 나오는게 아니고 첫번째 TreeView에만 추가가 되며

다른 노드를 클릭 후 첫번째 TreeView Parent3 노드를 클릭하면 그때야 두번째 TreeView에 추가했던 값이 나왔습니다.


소스에서 console.log(node2)를 찍으면 undefined가 찍혀서 if문에서 두번째 TreeView에서 노드추가 하는 부분을 안타는 것 같습니다.

그래서 오류 발생이 안되는게 아닌가 합니다.

다시 한번 확인부탁드립니다.


댓글목록

GCK다이애나님의 댓글

GCK다이애나 작성일

안녕하세요 그레이프시티입니다.

첫 번째 TreeView 컨트롤에 자식 노드가 다 나오지 않는다는 말씀은, 첫 번째 TreeView 컨트롤은 최 상위 부모 노드만 표기 하는 것으로 이해 하는 것이 맞을까요?
정확한 답변을 드리기 위해 요청 드리며 확인 후, 회신하여 주시기 바랍니다.

감사합니다.
그레이프시티 드림

아이지니님의 댓글

아이지니 작성일

네 맞습니다. 말씀하신데로 첫번째 TreeView 컨트롤에는 최상위 부모 노드만 표기하고 싶습니다.

ReactJS Re: treeview를 2개로 나누어 사용할때 노드 추가시 오류가 발생되어 문의드립니다.

추천0 이 글을 추천하셨습니다 비추천0 채택채택

페이지 정보

작성자 GCK다이애나 작성일 2022-09-26 11:17 댓글 1건

본문

안녕하세요 그레이프시티입니다.


먼저 원하시는 답변을 드리지 못해 죄송합니다.

문의 주신 내용에 대해 답변 드립니다.

collapseToLevel 메서드를 통해 TreeView 컨트롤의 모든 노드를 축소하여 최상위 부모 노드만 표기할 수 있습니다.

아래의 샘플을 참고해주시기 바랍니다.

샘플은 다음과 같은 방법으로 구현되었습니다.

  1. initialized 이벤트가 사용자 정의 함수 initialized 로 지정된 첫 번째 TreeView 컨트롤과 사용자 정의 함수 initialized2 로 지정된 두 번째 TreeView 컨트롤을 생성합니다.
  2. id 속성 값이 'theInput' 로 지정된 input 태그와 onClick 이벤트가 사용자 정의 함수 onAddNodeClick 로 설정된 '자식 노드 추가' 버튼을 생성합니다.
  3. 첫 번째 TreeView 컨트롤의 loadedItems 이벤트 호출 시 매개 변수가 '0' 인 collapseToLevel 메서드를 호출하도록 구현합니다. 
  4. 첫 번째 TreeView 컨트롤의 onItemClicked 이벤트 호출 시 매개 변수가 '0' 인 collapseToLevel 메서드를 호출하고 두 번째 TreeView 컨트롤의 데이터를 지정하는 코드를 구현합니다
  5. 사용자 정의 함수 onAddNodeClick 에 다음과 같은 코드를 구현합니다.
    -1. initialized 이벤트를 통해 불러온 첫 번째 TreeView 컨트롤과 두 번째 TreeView 컨트롤의 인스턴스 값을 변수 control, control2 에 각각 저장합니다.
    -2. id 속성 값이 'theInput' 인 input 태그의 인스턴스 값을 이용하여 해당 input 태그의 value 속성의 값이 존재하면 자식 노드가 추가되는 코드를 구현합니다.
    -3. 이때 두 번째 TreeView 컨트롤의 selectedNode 속성 값이 지정되지 않은 상태로 자식 노드를 추가하는 경우, 첫 번째 TreeView 컨트롤의 selectedNode 속성의 nodes 속성 값이 지정되어 있는 지를 기준으로 하여 자식 노드를 순서에 맞게 추가하는 코드를 구현합니다.
    -4. 자식 노드를 추가한 후, control 변수를 이용하여 매개 변수가 '0'인 collapseToLevel 메서드를 호출합니다.


- collapseToLevel API 문서

- loadedItems API 문서

- selectedNode API 문서

- nodes API 문서


API 문서를 공유드리며 다른 궁금한 점이 생기면, 문의 주시기 바랍니다.


감사합니다.


그레이프시티 드림

댓글목록

삭제된 댓글

아이지니 작성일

삭제된 댓글 입니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.