트리뷰 아이콘 컨트롤하기
트리뷰(TreeView)
에는 트리컬럼의 왼쪽에 노드마다 서로 다른 아이콘을 표시할 수 있습니다.
또, 아이콘 필드의 값을 변경 하면 노드의 펼쳐짐
, 접힘
상태에 따라 다른 아이콘을 표시할 수도 있습니다.
그리드뷰(GridView) 또는 트리뷰(TreeView)에서 이미지를 사용하려면 먼저, ImageList객체를 이용해 이미지파일의 경로를 목록으로 만들어야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var imageList = new RealGridJS.ImageList("images", "/demo/resource/image/smallflag/");
imageList.addUrls([
"icon_male.png",
"icon_female.png",
"de.png",
"gr.png",
"hu.png",
"is.png",
...
]
);
treeView.registerImageList(imageList);
treeView.setTreeOptions({
iconImages: imageList.getName(),
iconWidth: 20
});
위 코드는 실제로 왼쪽 데모 화면에서 트리뷰(TreeView)에 아이콘을 적용하기 위해 이미지 목록을 만들고 트리에 등록하는 코드입니다. 이미지 목록을 트리에 등록하고 사용하려면
함수를 사용하면 됩니다.
트리뷰(TreeView)에는 각 노드에 아이콘을 표시할 수 있습니다.
아래 트리 구현 함수들에서는 함수의 마지막 인자인 iconField
에 트리컬럼에 표시할 아이콘의 index값이
들어 있는 필드명을 입력합니다. 이 필드에 들어있는 값이 트리노드의 기본 아이콘 인덱스(icon index)가 됩니다.
또 다른 트리 구현 함수인 아래 함수들에서는 두 번째 인자인 options
즉, DataFillOptions의
rows
속성의 값으로 위 속성명인 'rows'
를 넘겨 주어야 합니다.
트리뷰에서 사용할 아이콘의 목록을 ImageList로 작성하고 만들어진 ImageList를 TreeView.registerImageList()함수로 TreeView에 등록하면 아이콘 필드에 입력된 index값에 해당 하는 아이콘에 트리노드에 표시됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 이미지 리스트 만들기
var imageList = new RealGridJS.ImageList("images", "/demo/resource/image/smallflag/");
imageList.addUrls([
"icon_male.png",
"icon_female.png",
"icon_folder_col.png",
"icon_folder-exp.png",
"de.png",
"gr.png",
"hu.png",
"is.png",
...
]
);
// 트리뷰에 이미지 리스트 등록하기
treeView.registerImageList(imageList);
treeView.setTreeOptions({
iconImages: imageList.getName(),
iconWidth: 20
});
트리 노드의 아이콘 인덱스(icon index)
를 가져오고 지정하기 위해
함수를 사용합니다.
1
2
3
4
5
6
7
8
9
10
// 현재 노드의 아이콘을 2 또는 3으로 변경하기
var current = treeView.getCurrent();
if (current && current.dataRow) {
var iidx = treeDataProvider.getIconIndex(current.dataRow);
if (iidx == 2) {
treeDataProvider.setIconIndex(current.dataRow, 3);
} else {
treeDataProvider.setIconIndex(current.dataRow, 2);
}
}
트리를 접거나 펼칠때 아이콘을 변경하기 위해 아래 두 이벤트를 사용할 수 있습니다.
위 콜백 함수를 이용해 트리 노드를 접거나 펼칠때 폴더 모양의 아이콘을 변경하는 코드를 실행해 보세요.
버튼을 누르면 트리의 두번째 레벨 노드를 접을때와 펼칠때 다른 아이콘이 표시됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 노드를 펼칠때 아이콘 인덱스를 3으로 변경
treeView.onTreeItemExpanded = function (tree, itemIndex, rowId) {
var level = treeDataProvider.getLevel(rowId);
if (level == 2) {
treeDataProvider.setIconIndex(rowId, 3);
}
}
// 노드를 접을때 아이콘 인덱스를 2로 변경
treeView.onTreeItemCollapsed = function (tree, itemIndex, rowId) {
var level = treeDataProvider.getLevel(rowId);
if (level == 2) {
treeDataProvider.setIconIndex(rowId, 2);
}
}
트리를 접거나 펼칠때 expander 이미지를 아래 두 함수를 사용해서 변경할 수 있습니다.
expand 표시를 해당 경로의 이미지 파일로 변경합니다.
1
treeView.setTreeOptions({expandImage:"/resource/image/smallflag/icon_folder_col.png"})
collapse 표시를 해당 경로의 이미지 파일로 변경합니다.
1
treeView.setTreeOptions({collapseImage:"/resource/image/smallflag/icon_folder_exp.png"})
트리의 라인을 표시하지 않습니다.
1
treeView.setTreeOptions({lineVisible:false})