DropDownCheckList
이 컨트롤은 무엇인가요?
DropDownCheckList는 브라우저의 네이티브 <select multiple> 태그를 그대로 사용하면서, 여러 항목을 체크박스처럼 동시에 선택할 수 있는 드롭다운 UI 컨트롤입니다.
내부적으로는 tail.select 라는 오픈소스 플러그인을 감싸서(wrapping) 동작하며, syn.uicontrols.$multiselect 라는 이름의 싱글턴 객체로 등록되어 있습니다. HTML 마크업에서는 항상 <select multiple> 태그와 syn-options 속성을 사용하고, JavaScript 코드에서는 syn.uicontrols.$multiselect.메서드명(...) 형태로 호출합니다.
DropDownList($select)와 마찬가지로 옵션 목록을 데이터소스로부터 자동으로 채워 넣을 수 있습니다.
- 로컬 캐시 JSON:
code/{storeSourceID}.json파일을 읽어서 옵션을 구성 (예:/assets/shared/code/CMM002.json) - 원격 데이터소스:
syn.$w.getDataSource를 통해 서버에서 코드값 목록을 조회
언제 사용하나요?
- DropDownList (
$select): 코드값 하나만 선택하는 일반적인 콤보박스가 필요할 때. 성별, 지역, 상태값처럼 "하나의 값을 고르는" 상황에 사용합니다. - DropDownCheckList (
$multiselect): 옵션 여러 개를 동시에 선택해야 할 때 사용합니다. 예를 들어 "파일 확장자 여러 개를 동시에 선택", "권한 등급을 복수로 선택" 같이 결과값이 목록(배열/콤마 문자열) 형태가 되어야 하는 화면에 적합합니다. - CodePicker: 코드값이 매우 많거나, 검색/모달 형태의 팝업으로 선택해야 할 때 사용합니다.
즉, DropDownList는 "하나만 고르는 콤보박스", DropDownCheckList는 "여러 개를 동시에 고르는 콤보박스"라고 이해하면 됩니다. 화면에 보이는 모양(드롭다운)은 비슷하지만, 반환되는 값이 단일 값인지 목록인지가 가장 큰 차이입니다.
빠른 시작
- 페이지에
<select multiple>태그를 배치하고id와syn-options속성을 지정합니다.
<select id="ddlFileExtension" multiple syn-options="{
placeholder: '전체',
storeSourceID: 'CMM010',
local: true,
toSynControl: true
}"></select>
- 페이지 하단에
syn.loader.js스크립트 한 줄만 추가하면, 로더가 필요한 CSS/JS(DropDownCheckList.js,DropDownCheckList.css,tail.select등)를 자동으로 주입하고 컨트롤을 초기화합니다.
<script src="/js/syn.loader.js"></script>
- 값을 읽거나 설정할 때는 페이지 스크립트에서
syn.uicontrols.$multiselect를 사용합니다.
// 선택된 값 조회 (콤마로 연결된 문자열, 예: "01,03")
var value = syn.uicontrols.$multiselect.getValue('ddlFileExtension');
// 값 설정 (코드값 배열 또는 콤마 문자열 기준)
syn.uicontrols.$multiselect.setValue('ddlFileExtension', ['01', '03']);
예제 실행하기
이 폴더의 example 디렉토리에 초보자용 실행 예제가 있습니다. 웹 서버를 통해 /uicontrols/DropDownCheckList/example/*.html 경로로 접속해서 바로 확인할 수 있습니다.
basic.html: 정적인 옵션 목록을 마크업에 그대로 담아 다중 선택하는 가장 단순한 예제datasource.html: 로컬 캐시 JSON(code/{storeSourceID}.json)을 데이터소스로 사용하는 예제getset.html:getValue/setValue/clear/loadData등 값 조작 API를 함께 보여주는 예제events.html:change이벤트와getSelectedValue/getSelectedText등 선택 정보 조회 API를 보여주는 예제
각 예제는 <script src="/js/syn.loader.js"></script> 한 줄만으로 동작하도록 만들어졌습니다.