안녕하세요 그레이프시티입니다.
문의 주신 내용에 대해 다음과 같이 답변 드립니다.
1. FlexGrid 컨트롤의 첫 번째 줄에 행 추가하는 방법
추가된 행의 currentPosition 속성 값을 불러온 후, moveCurrentToPosition 메서드를 사용해 추가된 행의 위치를 변경하는 코드를 구현하여 FlexGrid 컨트롤의 첫 번째 줄에 행을 추가할 수 있습니다.
아래의 코드를 참고해 보시기 바랍니다.
샘플의 18~33번 라인에서 아래의 코드를 확인해 보실 수 있습니다.
function rowAdded_Top(s) {
// 생성된 행의 위치
let addedIndex = s.collectionView.currentPosition;
// 최 상단 행의 위치
let firstIndex = 0,
arr = s.collectionView.sourceCollection;
// 시간 차를 두고 그리드의 collectionView 클래스 데이터를 업데이트
setTimeout(() => {
s.collectionView.deferUpdate(() => {
let item = arr[addedIndex];
arr.splice(addedIndex, 1);
arr.splice(firstIndex, 0, item);
s.collectionView.moveCurrentToPosition(firstIndex);
});
}, 100);
}
이와 관련된 API 문서 링크를 첨부해 드리오니 참고해 주시기 바랍니다.
- currentPosition API 문서
- deferUpdate API 문서
- moveCurrentToPosition API 문서
2. FlexGrid 컨트롤에 추가된 행의 위치로 뷰를 스크롤 하는 방법
위의 항목과 같이 추가된 행의 현재 위치 값을 불러온 후, scrollIntoView 메서드를 이용해 특정 위치로 뷰를 스크롤 하는 코드를 구현하여 FlexGrid 컨트롤에 추가된 행의 위치로 뷰를 스크롤 할 수 있습니다.
아래의 코드를 참고해 보시기 바랍니다.
샘플의 36~43번 라인에서 아래의 코드를 확인해 보실 수 있습니다.
function rowAdded_Scroll(s, e) {
// 생성된 행의 위치
let addedIndex = s.collectionView.currentPosition;
setTimeout(() => {
// 시간차를 두고 그리드 렌더링
s.scrollIntoView(addedIndex, -1);
}, 100);
}
이와 관련된 API 문서 및 데모 링크를 첨부해 드리오니 참고해 주시기 바랍니다.
- 스크롤 및 ViewRange (React) 데모
- scrollIntoView API 문서
추가적으로, allowAddNew 속성 값이 true인 FlexGrid 컨트롤의 rowAdded 이벤트에 상 기의 코드를 작성하여 문의 주신 내용을 구현할 수 있습니다.
이와 관련된 API 문서 링크를 첨부해 드리오니 참고해 주시기 바랍니다.
- allowAddNew API 문서
- rowAdded API 문서
자세한 코드는 아래의 샘플을 참고해 보시기 바랍니다.
샘플에서 '그리드 상단에 행 추가' 버튼을 클릭해 첫번째 줄에 추가되는 행을 확인해 보실 수 있습니다.
또한, '추가된 행의 위치로 스크롤 이동' 버튼을 클릭해 FlexGrid 컨트롤에 추가된 행의 위치로 스크롤 된 뷰를 확인해 보실 수 있습니다.
다른 궁금한 점이 생기면, 문의 주시기 바랍니다.
감사합니다.
그레이프시티 드림