OpenGrid
이 컨트롤은 무엇인가요?
OpenGrid.js는 오픈소스 그리드 라이브러리 open-grid(MIT License, v1.3.1)를 감싼 HandStack 그리드 엔진 브리지입니다. syn.uicontrols.$opengrid 싱글턴 객체로 노출되며, <syn_opengrid> 커스텀 태그로 사용합니다.
open-grid는 ESM 전용 라이브러리라서 OpenGrid.js는 동적 import()로 /js/open-grid/open-grid.js를 비동기 로드해 window.OpenGrid에 바인딩합니다. 가상 스크롤·렌더링·정렬/필터·인라인 편집 등 그리드 엔진 자체의 구현은 전부 vendor 번들에 위임하고, OpenGrid.js는 HandStack uicontrol 관례(columns 축약 배열 정의, Flag(R/C/U/D) 기반 변경 추적, codehelp 팝업 연동 등)를 open-grid의 공개 API 위에 재배선하는 래퍼 역할만 담당합니다.
가장 큰 특징은 상용 라이선스가 필요 없다는 점입니다. AUIGrid/AUIPivot는 상용 벤더 라이브러리가 필요하고 WebGrid(Handsontable)도 상용 환경에서는 라이선스 정책을 확인해야 하지만, OpenGrid는 MIT 라이선스 오픈소스라 별도 계약 없이 자유롭게 사용할 수 있습니다.
언제 사용하나요?
- 상용 그리드 라이선스 없이 CRUD 그리드, 대용량 데이터, 차트 연동, 트리/그룹핑 등 업무용 기능이 폭넓게 필요할 때
- 신규 화면에서 라이선스 비용 없이 AUIGrid 수준의 기능(고정 컬럼, 코드헬프 팝업, 필터, 내보내기 등)을 사용하고 싶을 때
- 이미 실무 표준으로 굳어진 화면을 유지보수하는 경우라면 AUIGrid를 그대로 사용하는 편이 더 간단합니다. OpenGrid는 신규 화면이나 라이선스 제약이 있는 프로젝트에 적합합니다.
빠른 시작
<div class="demo-toolbar">
<button type="button" id="grdBasic_load">데이터 조회</button>
<button type="button" id="grdBasic_insert">행 추가</button>
<button type="button" id="grdBasic_remove">행 삭제</button>
<button type="button" id="grdBasic_export" class="secondary">CSV 내보내기</button>
</div>
<syn_opengrid id="grdBasic" syn-options="{
editable: true,
columns: [
['MemberNo', '번호', 70, false, 'number', true, 'center'],
['MemberName', '이름', 120, false, 'text'],
['Email', '이메일', 200, false, 'text'],
['Department', '부서', 110, false, 'text'],
['Point', '포인트', 90, false, 'number']
]
}"></syn_opengrid>
<script src="/js/syn.js"></script>
<script src="/uicontrols/OpenGrid/OpenGrid.js"></script>
syn.uicontrols.$opengrid.setValue('grdBasic', sampleMembers(50));
syn.uicontrols.$opengrid.insertRow('grdBasic', { MemberNo: 51, MemberName: '신규 사용자' });
syn.uicontrols.$opengrid.removeRow('grdBasic');
syn.uicontrols.$opengrid.exportFile('grdBasic', { fileName: 'basic.csv' });
예제 모아보기
example/index.html이 이미 19개 카테고리로 잘 정리된 예제 갤러리입니다. 각 카테고리 안의 파일명/레이블은 아래 표를 참고하세요.
시작하기 (start)
| 예제 | 설명 |
|---|---|
start/basic.html | 기본 그리드(조회·추가·삭제·정렬·CSV 내보내기) |
start/columnConfig.html | 컬럼 설정 |
start/gridOptions.html | 그리드 옵션 |
데이터 & 컬럼 (dataColumns)
| 예제 | 설명 |
|---|---|
dataColumns/sorting.html | 정렬 |
dataColumns/filtering.html | 필터 |
dataColumns/fixedColumns.html | 고정 컬럼 |
dataColumns/columnReorder.html | 컬럼 리오더 |
dataColumns/multiHeader.html | 다단(줄바꿈) 헤더 |
dataColumns/changeTracking.html | 변경 추적 |
dataColumns/variableRowHeight.html | 가변 행 높이 |
행 & 선택 (rowsSelection)
| 예제 | 설명 |
|---|---|
rowsSelection/rowSelection.html | 행 선택 |
rowsSelection/checkbox.html | 체크박스 |
rowsSelection/rowState.html | 행 상태 |
rowsSelection/rowDrag.html | 행 드래그 |
셀 & 편집 (cellsEditing)
| 예제 | 설명 |
|---|---|
cellsEditing/cellEdit.html | 셀 편집 |
cellsEditing/cellTypes.html | 셀 타입 |
cellsEditing/cellMerge.html | 셀 병합 |
cellsEditing/masking.html | 데이터 마스킹 |
cellsEditing/cascadingFilter.html | 캐스케이딩 필터 |
cellsEditing/wrapTooltip.html | 줄바꿈 & 툴팁 |
cellsEditing/currencyFormat.html | 통화 포맷 |
이벤트 (events)
| 예제 | 설명 |
|---|---|
events/basicEvents.html | 기본 이벤트 |
events/extendedEvents.html | 이벤트 확장 |
events/triggers.html | 트리거 |
그룹 & 트리 (groupingTrees)
| 예제 | 설명 |
|---|---|
groupingTrees/grouping.html | 그룹핑 |
groupingTrees/treeStructure.html | 트리 구조 |
groupingTrees/subtotal.html | 합계/소계 |
페이지 & 검색 (paginationSearch)
| 예제 | 설명 |
|---|---|
paginationSearch/pagination.html | 페이지네이션 |
paginationSearch/findSearch.html | 검색 |
paginationSearch/keyboardShortcuts.html | 키보드 단축키 |
위젯 렌더러 (widgetRenderers)
| 예제 | 설명 |
|---|---|
widgetRenderers/imageButton.html | 이미지 / 버튼 |
widgetRenderers/link.html | 링크 |
widgetRenderers/media.html | 미디어 |
widgetRenderers/mapLink.html | 지도 연동 |
특수 기능 (specialFeatures)
| 예제 | 설명 |
|---|---|
specialFeatures/contextMenu.html | 컨텍스트 메뉴 |
specialFeatures/worksheet.html | 워크시트 |
specialFeatures/formula.html | 수식 계산 |
specialFeatures/i18n.html | 다국어 (i18n) |
specialFeatures/pivotTable.html | 피벗 테이블 |
specialFeatures/orgChart.html | 조직도(그래픽) |
specialFeatures/sapVoucher.html | SAP 전표 |
specialFeatures/xmlIntegration.html | XML 연동 |
specialFeatures/formIntegration.html | 폼 연동 |
specialFeatures/crossGridMove.html | 그리드 간 이동 |
specialFeatures/bigData.html | 대용량 데이터 |
specialFeatures/extendOverride.html | 확장·오버라이드 |
내보내기 (exportCat)
| 예제 | 설명 |
|---|---|
exportCat/excelExport.html | 엑셀 내보내기 |
exportCat/csvJson.html | CSV/JSON |
exportCat/print.html | 인쇄 |
스타일 & 테마 (stylingThemes)
| 예제 | 설명 |
|---|---|
stylingThemes/themeChange.html | 테마 변경 |
stylingThemes/customCss.html | 커스텀 CSS |
stylingThemes/rowHeaderHeight.html | 행높이 · 헤더높이 |
stylingThemes/fontChange.html | 폰트 변경 |
stylingThemes/skin.html | 스킨 |
stylingThemes/icon.html | 아이콘 |
stylingThemes/textureMatrix.html | 재질 매트릭스 |
접근성 (accessibility)
| 예제 | 설명 |
|---|---|
accessibility/wcag.html | 웹접근성 WCAG 2.2 |
accessibility/keyboardScreenReader.html | 키보드 · 낭독 · 텍스트 등가 |