컬럼 지정하기
그리드 컬럼은 columns 파라미터를 사용하여 설정합니다.

// 기본 컬럼 정의
gantt.config.columns = [
{ name: "text", label: "Task name", width: "*", tree: true },
{ name: "start_date", label: "Start time", align: "center" },
{ name: "duration", label: "Duration", align: "center" },
{ name: "add", label: "", width: 44 }
];
그리드 컬럼을 설정하는 방법을 다루는 동영상 가이드도 제공됩니다.
개요
기본적으로 그리드는 4개의 컬럼을 보여줍니다:
- Task name
- Start date
- Duration
- '+' 컬럼. 이 특수 컬럼(
name="add")은 사용자가 하위 작업을 추가할 수 있도록 '+' 기호를 표시합니다.
참고: 기본 컬럼을 그리드에 표시하려면 columns 파라미터를 반드시 지정할 필요는 없습니다.
columns 파라미터는 각 객체가 하나의 컬럼을 정의하는 배열입니다.
예를 들어, 'Task', 'Start Date', 'End Date', 'Holder', 'Progress'라는 5개의 컬럼을 정의하려면 다음과 같이 설정합니다:
gantt.config.columns = [
{ name: "text", label: "Task name", tree: true, width: "*" },
{ name: "holder", label: "Holder", align: "center" },
{ name: "start_date", label: "Start time", align: "center" },
{ name: "end_date", label: "End date", align: "center" },
{ name: "progress", label: "Progress", align: "center" }
];
gantt.init("gantt_here");
여기서 'text', 'holder', 'start_date', 'end_date', 'progress'는 데이터 속성명과 일치합니다.
작업의 종료일 표시
작업 데이터 객체에 시작일과 종료일이 "%Y-%m-%d" 또는 "%d-%m-%Y" (시, 분 없이) 형식으로 포함된 경우, 기본 포맷으로 표시되는 종료일이 예상과 다를 수 있습니다. 종료일 포맷에 대한 자세한 내용은 작업 종료일 표시 및 종료일 포함 문서를 참고하세요.
특정 작업에서 "Add" 버튼 숨기기
특정 작업에 하위 작업 추가를 막으려면 CSS를 이용해 'Add' 버튼을 숨길 수 있습니다.
- 먼저, grid_row_class 템플릿을 사용하여 각 작업 행에 CSS 클래스를 지정합니다:
gantt.templates.grid_row_class = ( start, end, task ) => {
if ( task.$level > 1 ) {
return "nested_task"
}
return "";
};
- 그런 다음, 해당 행의 'Add' 버튼을 CSS로 숨깁니다:
.nested_task .gantt_add {
display: none !important;
}
컬럼 너비 설정
컬럼의 너비는 해당 컬럼의 설정 객체에서 width 속성으로 지정합니다:
gantt.config.columns = [
{ name: "text", label: "Task name", width: "*", tree: true },
{ name: "start_date", label: "Start time", width: 150 },
{ name: "duration", label: "Duration", width: 120 }
];
gantt.init("gantt_here");
width에 '*'를 지정하면 해당 컬럼이 남은 모든 공간을 차지합니다.
그리드 컬럼의 너비는 컬럼의 width와 전체 grid_width 두 설정에 따라 달라집니다. 전체 컬럼 너비 합이 그리드 너비와 일치하지 않을 경우, Gantt가 이 값들 중 하나를 조정합니다.
- gantt.init()로 gantt를 초기화할 때는 컬럼의 width가 우선 적용됩니다.
Related example: 초기화 시 컬럼 너비 우선
- gantt.render()로 gantt를 렌더링할 때는 grid_width가 우선 적용됩니다.
Related example: 렌더링 시 그리드 너비 우선
- gantt.init()로 초기화할 때 컬럼 너비가 없거나 **'*'**로 설정된 경우 grid_width가 우선 적용됩니다.
Related example: 초기화 시 컬럼 너비가 없거나 '*'일 때 그리드 너비 우선
컬럼 최소/최대 너비
컬럼 리사이징 시 너비 제한을 위해 min_width 및 max_width 속성을 사용할 수 있습니다:
gantt.config.columns = [
{ name: "text", label: "Task name", width: "*", tree: true, min_width: 150,
max_width: 300
},
{ name: "start_date", label: "Start time", width: 150 },
{ name: "duration", label: "Duration", width: 120 }
];
gantt.init("gantt_here");
컬럼의 min_width 속성은 gantt의 min_grid_column_width 설정보다 우선합니다.
리사이징 시 최소 그리드 너비
그리드의 최소 리사이즈 너비는 gantt.config.min_grid_column_width로 설정할 수 있습니다. 이 옵션은 그리드 리사이즈 시 각 컬럼이 가질 수 있는 최소 너비를 정의합니다:
gantt.config.columns = [
{ name: "text", label: "Task name", width: 150, tree: true },
{ name: "start_date", label: "Start time", width: 100 },
{ name: "duration", label: "Duration", width: 50 }
];
gantt.config.min_grid_column_width = 30; // 그리드는 최소 90px까지 리사이즈 가능
gantt.init("gantt_here");
Related example: 최소 그리드 너비
또한, 리사이즈 시 최소 그리드 너비는 'add' 컬럼의 최소 너비(기본값 44)에 따라 달라집니다. 44px보다 작게 리사이즈하려면 'add' 컬럼에 min_width를 다음과 같이 설정하세요:
{ name: "add", label: "", min_width: 1 }
데이터 매핑과 템플릿
기본적으로 dhtmlxGantt는 컬럼 이름과 일치하는 데이터 속성을 사용하여 그리드를 채웁니다. 예를 들어, 컬럼에 **name:"holder"**가 있으면 dhtmlxGantt는 JSON 데이터에서 'holder' 속성을 찾아 해당 컬럼에 표시합니다.
컬럼 데이터에 템플릿 사용
여러 데이터 속성의 조합을 컬럼에 표시하고 싶다면, 컬럼 이름을 임의로 지정하고 columns 파라미터의 template 속성에 데이터 템플릿을 설정할 수 있습니다.
예를 들어, 컬럼 이름을 **name:"staff"**로 하고, holder와 progress 속성을 조합하여 반환하는 템플릿 함수를 만들 수 있습니다:
gantt.config.columns = [
{ name: "text", label: "Task name", tree: true, width: "*" },
{ name: "start_date", label: "Start time", align: "center" },
{ name: "staff", label: "Holder(s)", template: (obj) => {
return `${obj.holder} (${obj.progress})`;
} }
];
gantt.init("gantt_here");