안녕하세요 그리드의 콤보박스 datamap에 대해서 문의드립니다.
아래처럼 초기 datamap세팅을하고 이벤트(rowchange)에따라서 다른datamap을 세팅해주고 싶은데
아래처럼 이벤트후 삼성,엘지로 되어있는 새로운 datamap으로 세팅을해주면
그리드 리스트 값들중에 compCode 의 value가 'SK'인 데이터의 display값이 '에스케이'로 되어있던것이
--> 'SK' 코드값으로 display되어버립니다.
질문 : datamap을 바꾸더라도 이벤트가 발생하지 않은 row의 display값은 변하지 않게하는 방법이 있을까요?
감사합니다.
1. grid initial
<FlexGrid initialized={_initUserListGrid}
2. 초기 콤보박스 dataMap
let array = [{code:'SK',codeName:'에스케이'},
{code:'HANWHA',codeName:'한화'}]
compDataMap = new DataMap(array, 'code', 'codeName');
3. event handller --> 바꿀 dataMap
const _initUserListGrid = (grid: any) => {
grid.selectionChanged.addHandler((g: any, arg: CellRangeEventArgs) => {
try {
if(!arg.getRow()) return;
const dataItem = arg.getRow().dataItem;
if (arg.getColumn().binding === 'compCode') {
let array = [{code:'SAMSUNG',codeName:'삼성'},
{code:'LG',codeName:'엘지'}]
arg.getColumn().dataMap = new DataMap(array, 'code', 'codeName');
}
}catch(e){log.error(e);}
});
};
4. 컬럼세팅
<FlexGridColumn header='회사명' binding="compCode" width={100} align={ColumnAlign.center} dataMap={compDataMap} isRequired={true} />