조회 작업을 위해 서버 호출 시 서버에서 리턴되어야 할 "응답 데이터"의 형식을 정의하며, 데이터 구조는 JSON 형식만 지원합니다. 



1. 기본 데이터 구조

  • doSearch 함수 또는 loadSearchData 함수에서 데이터 바인딩 시 사용되는 데이터 구조입니다.
  • 서버 응답 데이터는 "Data" 속성을 최상위로 가지고 있으며, "Data" 속성 안에는 각각의 항목이 객체 형태로 들어 있는 배열이 포함되어 있습니다.
    {"Data":
        [
            {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021"},
            {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022"}
        ]
    }
  • 각 데이터 행(Row)에 편집 가능 여부, 색상 등 속성을 지정할 수 있으며, 이 속성을 기준으로 원하는 데이터를 조회할 수 있습니다.
  • 각 데이터 행(Row)에 적용할 수 있는 속성값은 도움말의 Properties >> Row 에서 확인할 수 있습니다. 
    {"Data":
        [
             // 첫번째 데이터행은 편집 불가로 설정(CanEdit)
            {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021", CanEdit:0},
            // 두번째 데이터행의 배경색상을 빨간색으로 설정(Color)
            {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022", Color:"red"}
        ]
    }
  • 각 데이터 셀(Cell)에 편집 가능 여부, 색상 등 속성을 지정할 수 있으며, 이 속성을 기준으로 원하는 데이터를 조회할 수 있습니다.
  • 셀(Cell)에 적용할 수 있는 속성값은 도움말의 Properties >> Cell 에서 확인할 수 있습니다.
    {"Data":
        [
             // 첫번째 데이터행의 sa_dept 컬럼을 편집 불가로 설정(CanEdit)
            {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021", sa_deptCanEdit:0},
            // 두번째 데이터행의 sa_dept 컬럼의 배경색상을 빨간색으로 설정(Color)
            {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022", sa_deptColor:"red"}
        ]
    }
  • 각 데이터 셀(Cell)이벤트를 설정할 수 있으며, 이 속성을 기준으로 원하는 데이터를 조회할 수 있습니다.
  • 각 데이터 셀(Cell) 적용할 수 있는 이벤트는 도움말의 Properties >> Event 에서 확인할 수 있습니다.
    {"Data":
        [
             // 첫번째 데이터행의 sa_dept 컬럼에 onChange 이벤트를 적용한다.
            {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021", sa_deptOnChange : Handler},
            {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022", sa_deptColor:"red"}
        ]
    }
    
    //화면단에서 Handler 함수
    function Handler(evtParam) {
        ...
    }
  • 서버 응답에 "IO" 속성이 포함된 경우, onBeforeDataLoadonDataLoad이벤트의 파라미터로 resultmessage가 전달됩니다.
    {"Data":
        [
            {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021"},
            {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022"}
        ],
    "IO": {"Result": 0, Message: "조회 성공"}
    }


2. 페이징 처리시 데이터 구조

  • doSearchPaging 함수로 데이터 바인딩 시 사용되는 데이터 구조입니다.
  • 서버 응답 데이터는 "Data" 속성을 최상위로 가지고 있으며, "Data" 속성 안에는 각각의 항목이 객체 형태로 들어 있는 배열이 포함되어 있습니다. 
  • 배열의 길이는 (Cfg) PageLength에 설정한 개수만큼 설정해야 합니다.
  • 반드시 "Total" 속성값에 DB 전체 데이터 건수가 명시되어 있어야 합니다.
  • 그 외 속성이나 데이터 형식은 1. 기본 데이터 구조와 동일하게 적용됩니다.
    {"Data":
        [
            {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021"},
            {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022"}
        ],
     "Total":25410      //<-- DB상의 전체건수 전체 건수
    }


3. Tree 데이터 구조

  • 서버 응답 데이터는 "Data" 속성을 최상위로 가지고 있으며, "Data" 속성 안에는 각각의 항목이 객체 형태로 들어 있는 배열이 포함되어 있습니다.
  • 하위 행이 존재하는 경우, 해당 객체의 Items 속성에 자식 행이 배열 형태로 포함되며, 이를 통해 트리(Tree) 구조의 데이터를 표현합니다. 
    // Items 속성안에 자식 행을 추가하는 형태로 구성
    {"Data":
        [
            //1 Depth
            {sProduct:"내부 시스템 개발 사업",sCustomer:"B사",
                //2 Depth
                Items:[
                    {sProduct:"글로벌 통합 인사시스템",sKind:"프로젝트"},
                    {sProduct:"LEGACY SW 공급",sKind:"소프트웨어"}
                ]
            },
            //1 Depth
            {sProduct:"복무급여고도화시스템",sCustomer:"D사",
                //2 Depth
                Items:[
                    {sProduct:"병원 전자구매 및 조달시스템",sKind:"납품"}
                ]
            },
            //1 Depth
            {sProduct:"2017~2018 솔루션 납품 및 판매",sCustomer:"E사",
                //2 Depth
                Items:[
                    {sProduct:"병원 개발/CDP 구축",sKind:"프로젝트"},
                    {sProduct:"성능개량 군수지원교보재",sKind:"프로젝트"},
                    {sProduct:"SHE시스템 구축",sKind:"프로젝트"},
                    {sProduct:"E-HR시스템",sKind:"유지보수",
                        //3 Depth
                        Items:[
                            {sProduct:"물산 E-HR시스템",sKind:"기타"},
                            {sProduct:"제조 E-HR시스템",sKind:"기타" }
                        ]
                    },
                    {sProduct:"건설 외주실적 단가시스템",sKind:"납품"},
                    {sProduct:"인재육성시스템",sKind:"프로젝트"},
                    {sProduct:"웹사이트 액티브X제거 관련 SW 구매",sKind:"프로젝트"}
            ]}
        ]
    }

  • Items 기반의 데이터 구조를 사용할 수 없는 경우, 각 데이터 객체에 Level 값을 지정하여 계층 구조를 표현할 수 있습니다.
  • 최상위 노드는 0부터 시작해야 하며, 하위 노드는 부모 노드보다 1씩 증가한 값으로 순차적으로 설정해야 합니다.
    var treeData = {
        "Data":[
            {Level:0 ,sProduct:"병원 개발/CDP 구축",sKind:"프로젝트"},
            {Level:1 ,sProduct:"성능개량 군수지원교보재",sKind:"프로젝트"},
            {Level:2 ,sProduct:"SHE시스템 구축",sKind:"프로젝트"},
            {Level:3 ,sProduct:"Cost Quotation System",sKind:"프로젝트"},
            {Level:4 ,sProduct:"전사업무지원시스템",sKind:"프로젝트"},
            {Level:4 ,sProduct:"통합판매관리시스템",sKind:"프로젝트"}
        ]
    }
  • 위와 같이 Level 값을 포함한 데이터는 ibsheet-common.js파일에서 제공하는 convert 함수를 통해 Items 기반의 트리 구조로 변환됩니다.

    var convertData = IBSheet.v7.convertTreeData(treeData);
    sheet.loadSearchData(convertData));
  • doSearch 함수로 조회 하는 경우 onReceiveData 이벤트에서 처리 가능 합니다.