728x90
반응형
오늘은 업무때 시간낭비가 많았던 node expand에 대해서 포스팅 해보려고 한다.
문제점 : child node 선택시 페이지가 새로고침되면서 parent node 가 펼침이 해제됨.
아니 도대체 왜 child 를 선택하면 parent도 자동으로 expand 되야 되는게 정상 아닌가
계속 로그를 찍어 봤고
DynatreeDTO.java 로 전달된 값중에
setExpand , getExpand 상태가 있는데
해당 상태는 상위 Parent Activate 가 True인 상태일 때만 하위 expand가 True가 되어야 한다.
따라서 for문중 최하위 쿨러01에 해당하는 Parent의 ID 값을 찾아 하위 레코드들의 expand옵션이 true로 되어야한다.
//fdynatree 상위 객체 FAN
//fdDynatree 하위 객체 FanDetail
for (FanDetail fd : listFanDetails)
{
DynaTree fdDynatree = new DynaTree();
fdDynatree.setType("FanDetail");
fdDynatree.setTitle(fd.getName());
fdDynatree.setKey(Long.toString(fd.getId()));
fdDynatree.setFolder(true);
fdDynatree.setFocus(true);
fdDynatree.setActivate("FanDetail".equals(type) && Fan.getId() == key);
//하위 FanDetail Dynatree가 true 일때 상위 Fan Dynatree에서 Activate상태가 False로 넘어와 해당 조건을 true로 넣어줌.
parentKey = new Long(fd.getKey());
if(fdDynatree.isActivate() && !fDynatree.isActivate() || fDynatree.isActivate()){
//상위dynatree 펼침 옵션
fDynatree.setActivate(true);
fDynatree.setExpand(parentKey == Fan.getTypeId());
//하위 dynatree펼침 옵션
fdDynatree.setExpand(true);
}
결론은
Parent
(+)child
sub-child
상태에서는 Parent의 Activate값이 true일때, 그리고 해당 노드의 child와 sub-child의 키값이 동일할때 만 Expand가 동작해야하므로 해당 조건에서만 true로 set해준다.
728x90
반응형