PureJS dataMap 사용시 셀수정관련
페이지 정보
작성자 댄서왕 작성일 2023-04-04 09:17 조회 630회 댓글 2건본문
관련링크
수고가 많으십니다.
위 예시와 같이 type에 따라서 value의 값을 표현하는 방식이 다릅니다.
DB에 type이 'N' 일경우는 value는 문자형 숫자가 들어가있고
type이 'N' 이 아닐경우는 value 값에 'OK' 또는 'NG' 라는 값이 들어가있습니다.
그래서 value 컬럼에 dataMap과 dataMapEditor를 사용하여 라디오버튼을 표현했고
type이 'N'이라면 formatItem을 사용하여 value값 본연의 문자형 숫자를 e.cell.textContent 에 넣어 위 이미지같이 만들어주는데 성공했습니다.
근데 문제는 radio 버튼은 선택이 잘되고 값 변경된것도 추적이 잘됩니다.
type이 N일경우 e.cell.textContent로 문자형 숫자값이 표현된 셀은 수정을 할수가 없다는 겁니다.
사용자가 셀 내용을 수정도 가능해야 하거든요.
dataMap사용시 수정안되게 막혀있는거 같은데 값을 수정가능토록 할수있는 방법은 없나요?
아래는 소스 첨부합니다.
let okng = [{ id: "OK", name: 'OK'},{ id: "NG", name: 'NG'}]; let _okngMap = new wijmo.grid.DataMap(okng,'id','name'); let testGrid = new wijmo.grid.FlexGrid("#testGrid",{ columns:[ {binding:'id', header:'id', width:55, align:'center',dataType:'String'}, {binding:'name', header:'name', align:'center', width:100, dataType:'String'}, {binding:'type', header:'type', align:'center', width:100, dataType:'String'}, {binding:'value', header:'value', align:'center',width:200, dataType:'String',dataMap:_okngMap,dataMapEditor:'RadioButtons'} ] }); testGrid.autoGenerateColumns = false; let testCv = new wijmo.collections.CollectionView(null); testGrid.itemsSource = testCv; testCv.trackChanges =true; testGrid.formatItem.addHandler((s,e)=>{ if(s.cells===e.panel && s.columns[e.col].binding==='value'){ let type = e.panel.getCellData(e.row,'type',false); if(type=='N') e.cell.textContent = e.panel.getCellData(e.row,'value',false); } }); let data = [ {"id":"AAA","name":"AAA","type":"N","value":"1.253"}, {"id":"BBB","name":"BBB","type":"A","value":"OK"}, {"id":"CCC","name":"CCC","type":"A","value":"NG"} ]; testCv.sourceCollection = data;