까불이 님, 안녕하세요.
그레이프시티입니다.
회신이 지연되어 죄송합니다.
▦ 질문 1
노드를 사용하려고 하는데요 ! 하위 노드에 데이터가 없을 경우 노드 표시를 없애고 싶은데 방법이 있을까요?
▦ 답변
SetRowExpandable 메서드를 사용하여, 특정 행의 행 확장/축소 아이콘을 표시하거나 제거할 수 있습니다. 아래 코드를 사용하면 첫번째 행의 노드표시를 지울 수 있습니다.
fpSpread1.ActiveSheet.SetRowExpandable(0, false);
자식 시트에 데이터가 존재하지 않는 경우, 확장/축소 아이콘을 표시하지 않는 샘플코드를 제공드리오니, 개발에 참고해주시기 바랍니다.
// 행 번호 좌측 정렬
fpSpread1.ActiveSheet.RowHeader.Columns[0].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left;
// 자식 시트가 없는 행의 노드표시를 제거합니다.
int rowCount = fpSpread1.ActiveSheet.GetLastNonEmptyRow(FarPoint.Win.Spread.NonEmptyItemFlag.Data) + 1;
for (int i=0; i < rowCount; i++)
{
if (fpSpread1.ActiveSheet.GetChildView(i, 0).RowCount == 0)
{
fpSpread1.ActiveSheet.SetRowExpandable(i, false);
}
}
▦ 질문 2
현재 바인딩 말고 programmically 하게 노드를 생성할 수 있는 방법은 없을까요?
▦ 답변
아래 링크된 도움말 문서에서 수동으로(프로그래밍 방식으로) 계층적 디스플레이를 생성하는 방법을 확인해보실 수 있습니다.
도움말 문서에 안내된 샘플 코드를 사용하면, 부모 시트의 두번째 행을 확장할 때, 행이 다섯 개인 자식 시트가 생성됩니다.
이때 GetChildView(int rowIndex, int relationIndex) 메서드를 사용하여 특정 행의 자식 시트에 접근할 수 있습니다.
일례로, 아래 코드를 사용하면 두번째 행의 A1셀에 "테스트 1"이라는 데이터를 삽입할 수 있습니다.
Dim sv As FarPoint.Win.Spread.SheetView = FpSpread1.Sheets(0).GetChildView(1, 0)
sv.Cells(0, 0).Value = "테스트1"
링크된 도움말 문서를 개발에 참고 부탁드립니다.
다시 한번, 회신이 지연된 점 죄송합니다.
감사합니다.
그레이프시티 드림