안녕하세요 그레이프시티입니다.
먼저 답변이 지연된 점 죄송 드리며 문의에 대해서 추가적으로 안내 드립니다.
2. 그리드 데이터 복사를 할 경우 헤더를 포함해서 복사가 가능한지요?
=> 기능 구현을 위해서 "copying" 이벤트를 이용하여 헤더 정보를 클립보드 문자열에 추가하면 됩니다. 그리드의 "getClipString" 메서드를 사용하여 선택 내용을 클립보드 형식의 문자열로 가져오고 문자열에 헤더를 추가한 다음 클립보드의 copy 메서드를 사용하여 결과를 클립보드에 배치해주시면 됩니다.
아래 간단한 코드를 확인하여 주시기 바랍니다.
theGrid.copying.addHandler(function(s,e){
// 클립 텍스트 가져오기
var text = s.getClipString();
// 헤더 추가
var sel = s.selection,
hdr = '';
for (var c = sel.leftCol; c <= sel.rightCol; c++) {
if (hdr) hdr += '\t';
hdr += s.columns[c].header;
}
text = hdr + '\r\n' + text;
// 클립보드에 텍스트 넣기
wijmo.Clipboard.copy(text);
//
e.cancel = true;
})
theGrid.pasting.addHandler(function(s,e){
//
e.cancel = true;
})
3. frozenColumn 속성을 이용하여 고정된 행을 생성하고 좌측 드래그를 통해 스크롤하는 방법
=> 먼저 해당 현상은 FlexGrid 컨트롤에서 디자인 된 결과입니다. 다만 기능을 우회적으로 구현하기 위해서 먼저 FlexGrid 컨트롤의 hostElement에 mousemove 이벤트를 추가해줍니다. 그 다음, 선택 영역이 고정된 열 근처로 이동되었는지 확인 후, scrollIntoView 메서드를 사용하여 수동으로 선택 영역을 이동하시면 됩니다.
아래 샘플 코드를 참고하여 주시기 바랍니다.
flex.hostElement.addEventListener('mousemove', (e) => {
let hti = ctl.hitTest(e);
if (hti.panel && hti.panel.cellType == wjcGrid.CellType.Cell) {
let cellRect = ctl.getCellBoundingRect(hti.row, 0);
if (
cellRect.right + 5 >= hti.point.x &&
ctl.selection.columnSpan >= 5
) {
ctl.scrollIntoView(hti.row, hti.col - 1);
}
}
});
- copying : https://demo.grapecity.co.kr/wijmo/api/classes/wijmo_grid.flexgrid.html#copying
- pasting : https://demo.grapecity.co.kr/wijmo/api/classes/wijmo_grid.flexgrid.html#pasting
- copy(clipboard) : https://demo.grapecity.co.kr/wijmo/api/classes/wijmo.clipboard.html#copy
API 문서를 같이 전달 드리며 다른 궁금한 점이 생기면, 문의 주시기 바랍니다.
감사합니다.
그레이프시티 드림