Type : Enum 열(Column)은 클릭 시 리스트가 펼쳐지며 설정한 내용이 보이게 됩니다.



이 리스트 안에 아이템을 여러 개 열(Column)형태로 표현하거나, 이미지를 표시하는 등 다양한 기능을 구현 할 수 있습니다.



1. 리스트의 내용을 Enum과 다르게 표현하기

EditEnum 속성을 통해 선택된 값과 리스트의 값을 다르게 표현 할 수 있습니다.

Enum, EditEnum 속성 설정 시 리스트 값에 \t를 추가하여 다 단 형태를 구현할 수 있습니다.

// IBSheet8 생성 부
   Cols:[
    {"Header": "현재작업상태","Type": "Enum","Name": "PRate", 
       "EnumKeys": "|01|02|03",   // 디비 저장 값
       "Enum": "|대기|진행중|완료", // 셀(Cell)에 표시되는 값
       "EnumEdit": "|대기\tDelay\t01|진행중\tProcess\t02|완료\tComplete\t03" // 리스트에 표시되는 값
    },
   ...
]


2. attribute+Formula 를 통한 리스트 내용 동적 변경

{
"Def": {
      "Row": {
      "CanFormula": true,
      "CalcOrder": "sPosEnum,sPosEnumKeys"
},
"Cols":[
    ....

    {"Header": "직급","Type": "Enum","Name": "sPos","Width": "95","Align": 
    "Center","ColorFormula": changeColorFormula,"CanEdit": 1,"RawSort": 1,
    "Enum": "|대표이사|이사|상무|소장|차장|부장|과장|대리|사원",
    "EnumKeys": "|01A|02A|03A|04A|04B|05B|06B|07B|08B|09B",
    "EnumFormula": enumFormula,"EnumKeysFormula": enumKeysFormula},

    ....
    ]
}

function enumFormula(f) {
  return f.Row['Chk'] ? '|대표이사|이사|상무|소장' : '|차장|부장|과장|대리|사원';
}

function enumKeysFormula(f) {
  return f.Row['Chk'] ? '|01A|02A|03A|04A' : '|04B|05B|06B|07B|08B|09B';
}

[채크박스 체크시]


[체크박스 언체크시]


예제보기)

https://jsfiddle.net/83fzck0v/


3. Type:"Enum"인  열(Column)에 Menu 기능 사용하기

1) 일부 아이템 선택 불가

{
"Cols": [
  {
    Header: "Type Enum",           
    Type: "Enum",
    Name: "sEnum",
    Enum: "|안산1|안산2|화성1|화성2|화성3|일산1|일산2",
    EnumKeys: "|A0|B0|C0|D0|E0|F0|G0",
    EnumMenu : {
      Items: [
        { Text: "안산1", Value: "A0", Disabled: 1 },
        { Text: "안산2", Value: "B0" },
        { Text: "화성1", Value: "C0" },
        { Text: "화성2", Value: "D0" },
        { Text: "화성3", Value: "E0", Disabled: 1 },
        { Text: "일산1", Value: "F0" },
        { Text: "일산2", Value: "G0" },
      ]
    },
    Width: 200,
    }
]
}


예제보기)

https://jsfiddle.net/kdwzexp0/


2) EnumMenu를 이용한 버튼 추가

var menuInit = {
  Color: "#DDFFDD",
  MenuMaxHeight: 50, //드랍리스트의 높이를 줄임
  Enum: "|안산1|안산2|화성1|화성2|화성3|일산1|일산2",
  EnumKeys: "|01|02|03|04|05|06|07",
  EnumMenu : {
    Items: [
          {Text: "공사현장 리스트",Caption: 1},
          {Text: "[안산1] 경기도 안산시 단원구 광덕3로 201",Value: "안산1"},
          {Text: "[안산2] 경기도 안산시 단원구 신길동 1509",Value: "안산2"},
          {Text: "[화성1] 경기도 화성시 반송동", Value: "화성1"},
          {Text: "[화성2] 경기도 화성시 동탄대로22길 30", Value: "화성2"},
          {Text: "[화성3] 경기도 화성시 산척동 283", Value: "화성3"},     
          {Text: "[일산1] 경기도 고양시 일산동구 정발산로82번길 10", Value: "일산1"},
          {Text: "[일산2] 경기도 고양시 일산동구 장항동 1761", Value: "일산2"},
    ],
    "Buttons":["item 추가"],
    OnButton:function(selectitem){
      if(selectitem == "item 추가"){
        alert("아이템 추가 버튼을 클릭하셨습니다.")
      }
    }
  }
}

options.Cols  = "Cols": [
   ...
    {"Header": "콤보(Enum)","Type": "Enum","Name": "ComboData",Extend:menuInit},
   ...
 ]


예제보기)

https://jsfiddle.net/6t9q21gk/