조회 작업을 위해 서버 호출 시 서버에서 리턴되어야 할 "응답 데이터"의 형식을 정의합니다.
시트 생성 시 데이터 형식
IBSheet.create()에 data 속성을 통해 생성 시 데이터 구조
IBSheet.create({ id:"sheet", // 생성할 시트의 id el:"sheetDiv", // 시트를 생성할 Dom 객체 및 id options: options, // 생성될 시트의 속성 // 생성될 시트의 정적데이터 data: [ {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021"}, {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022"} ] });
doSearch나 loadSearchData 메소드를 통한 데이터 로드
Data 속성 안에 배열형태로 데이터 구성
{"Data": [ {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021"}, {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022"} ] }
doSearchPaging 메소드를 통한 데이터 로드
Data 속성 안에 (cfg)PageLength 에서 설정한 개수만큼 배열 형태로 데이터 구성
{"Data": [ {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021"}, {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022"} ], "Total":25410 //<-- DB상의 전체건수 전체 건수 }
조회 후 서버 응답 데이터 규격
Data 속성 안에 배열 형태로 데이터 구성
{"Data": [ {"sa_name":"홍길동","sa_no":"940154","sa_dept":"A021"}, {"sa_name":"김지수","sa_no":"950757","sa_dept":"B022"} ], "IO": {"Result": 0, Message: "조회 성공"} }
조회 데이터 내에 Row property,Cell property 적용(중요)
- 조회 데이터 안에 Row property에 해당하는 내용을 데이터와 함께 적용
{"Data": [ // 행의 색상을 붉은색으로 표시 {"sa_name":"홍길동","sa_no":"940154",... , Color:"#FF8888"}, // 행 편집 불가 {"sa_name":"김지수","sa_no":"950757",... , CanEdit:0} ] }
- 조회 데이터 안에 "컬럼명+Cell Property" 형식으로 설정시 Cell 기능 부여
{"Data": [ // sn_id cell 글자색 설정 {"sn_id":"209321","lot":"k0923123", sn_idTextColor:"#FF0000"}, // lot cell 편집 불가 {"sn_id":"209327","lot":"r2019283", lotCanEdit:0}, // pos 컬럼(Enum타입)에 item을 해당 셀만 다르게 설정 {"pos":"A02", posEnum: "|성남시|부천시|광명시|화성시", posEnumKeys: "|A00|A01|A02|A03"} ] }
조회 데이터 내에 JSON Event 적용
// 조회 데이터에 JSON 이벤트를 포함할수 있습니다. {"Data": [ // sa_name컬럼의 값 수정시 sawonPop() 함수 호출 {"sa_name":"홍길동",sa_nameOnChange:"sawonPop"}, ], }
Tree 데이터 로드
1) 일반적인 Tree 데이터 형태
// Items 속성안에 자식 행을 추가하는 형태로 구성 {"Data": [ //1 Depth {sProduct:"내부 시스템 개발 사업",sCustomer:"B사",sDate:"20180116", sCustomerRowSpan:2, //2 Depth Items:[ {sProduct:"글로벌 통합 인사시스템",sKind:"프로젝트", sCount:"1",sPrice:"192"}, {sProduct:"LEGACY SW 공급",sKind:"소프트웨어", sCount:"1",sPrice:"420"} ] }, //1 Depth {sProduct:"복무급여고도화시스템",sCustomer:"D사",sDate:"20171031", //2 Depth Items:[ {sProduct:"병원 전자구매 및 조달시스템",sKind:"납품",sCount:"1",sPrice:"303",sDiscount:"10" } ] }, //1 Depth {sProduct:"2017~2018 솔루션 납품 및 판매",sCustomer:"E사",sDate:"20170520", //2 Depth Items:[ {sProduct:"병원 개발/CDP 구축",sKind:"프로젝트",sCount:"1",sPrice:"29"}, {sProduct:"성능개량사업 군수지원교보재",sKind:"프로젝트",sCount:"1",sPrice:"15.5",sDiscount:"5"}, {sProduct:"SHE시스템 구축",sKind:"프로젝트",sCount:"1",sPrice:"79"}, {sProduct:"Cost Quotation System",sKind:"프로젝트",sCount:"1",sPrice:"3"}, {sProduct:"전사업무지원시스템",sKind:"프로젝트",sCount:"1",sPrice:"59.5"}, {sProduct:"통합판매관리시스템",sKind:"프로젝트",sCount:"1",sPrice:"39"}, {sProduct:"E-HR시스템",sKind:"유지보수", //3 Depth Items:[ {sProduct:"물산 E-HR시스템",sKind:"기타",sCount:"1",sPrice:"4"}, {sProduct:"제조 E-HR시스템",sKind:"기타",sCount:"1",sPrice:"4" } ] }, {sProduct:"건설 외주실적 단가시스템",sKind:"납품",sCount:"1",sPrice:"95"}, {sProduct:"인재육성시스템",sKind:"프로젝트",sCount:"1",sPrice:"7"}, {sProduct:"웹사이트 액티브X제거 관련 SW 구매",sKind:"프로젝트", sCount:"1",sPrice:"22.5" } ]} ] }
2) 간단한 Tree 데이터 형태
var treeData = { "Data":[ {Level:1 ,sProduct:"병원 개발/CDP 구축",sKind:"프로젝트",sCount:"1",sPrice:"29"}, {Level:2 ,sProduct:"성능개량사업 군수지원교보재",sKind:"프로젝트",sCount:"1",sPrice:"15.5",sDiscount:"5"}, {Level:3 ,sProduct:"SHE시스템 구축",sKind:"프로젝트",sCount:"1",sPrice:"79"}, {Level:2 ,sProduct:"Cost Quotation System",sKind:"프로젝트",sCount:"1",sPrice:"3"}, {Level:3 ,sProduct:"전사업무지원시스템",sKind:"프로젝트",sCount:"1",sPrice:"59.5"}, {Level:3 ,sProduct:"통합판매관리시스템",sKind:"프로젝트",sCount:"1",sPrice:"39"}, ] }
위와 같이 Level을 통해 각 행의 Depth를 가져온 후 데이터 로드 시점에서 ibsheet-common.js에서 제공하는 convert함수를 통해 변환하여 로드한다. (Level의 대소문자 주의)
var convertData = IBSheet.v7.convertTreeData(treeData); sheet.loadSearchData(convertData));