Vue 환경에서 IBSheetVue 컴포넌트를 이용한 개발 시 주의사항 입니다.
[App.vue 파일]
<script setup>
import { IBSheetVue, IB_Preset } from '@ibsheet/vue';
import { ref, shallowRef, onMounted } from 'vue';
import { sheetData } from './data.js';
// 시트 생성 시점
const createSheet = ref(false);
// 시트 객체를 담을 ref 객체
const mySheet = shallowRef(null);
// 시트 객체 너비/높이 style
const customStyle = {
width: '100%',
height: '400px',
border: '1px solid #ccc',
};
const sheetOptions = {
LeftCols: [
{
Header: 'No',
Type: 'Int',
Width: 50,
Align: 'Center',
Name: 'SEQ',
CanMove: 0,
CanFocus: 0,
},
],
//중앙(메인) 컬럼 설정
Cols: [
{
Header: '선택',
Type: 'Bool',
Name: 'CHK',
Width: '50',
Align: 'Center',
CanEdit: 1,
},
{
Header: '대차계약번호',
Type: 'Text',
Name: 'CONTRACTNO',
Width: '120',
Align: 'Center',
CanEdit: 0,
},
{
Header: '대차지점',
Type: 'Text',
Name: 'DELIVERYDEPTNAME',
Width: '120',
Align: 'Center',
CanEdit: 0,
TextColor: 'BLUE',
},
{
Header: '차량번호',
Type: 'Text',
Name: 'CARNO',
Width: '120',
Align: 'Center',
CanEdit: 1,
Tip: 1,
},
{
Header: '차명(FULL차명)',
Type: 'Text',
Name: 'CARNAMEMSTNAME',
Width: '200',
Align: 'Left',
CanEdit: 1,
},
{
Header: '24시간기본요금',
Type: 'Float',
Name: 'RENTFEE',
Width: '120',
Align: 'Right',
CanEmpty: 1,
Format: ',#.##',
},
{
Header: '출고일자',
Type: 'Date',
Name: 'RENTDATE',
Width: '100',
Align: 'Center',
Format: 'yyyy/MM/dd',
DataFormat: 'yyyyMMdd',
CanEdit: 0,
},
{
Header: '입고일자',
Type: 'Date',
Name: 'RETURNDATE',
Width: '100',
Align: 'Center',
Format: 'yyyy/MM/dd',
DataFormat: 'yyyyMMdd',
CanEdit: 0,
},
{
Header: '대차유형',
Type: 'Text',
Name: 'PROMOCODE',
Width: '100',
Align: 'Center',
CanEdit: 1,
},
{
Header: '순서',
Type: 'Text',
Name: 'NO',
Width: '50',
Align: 'Center',
DefaultValue: 'defaultValue',
},
{
Header: '할인율',
Type: 'Int',
Name: 'DISCOUNTRATE',
Width: '50',
Align: 'Center',
Format: '#,##0',
CanEdit: 1,
},
],
Events: {
// 시트 생성 완료 이벤트
onRenderFirstFinish: (evt) => {
// 시트객체 생성시 1회만 발생합니다.
// v-if를 통해 항상 onMounted 이후에 생성됩니다.
mySheet.value = evt.sheet; // 생성된 시트 객체를 ref객체에 담음
mySheet.value.loadSearchData(sheetData);
},
},
};
// 화면 마운트 시점 (IBSheet객체는 만들어지기 전)
onMounted(async () => {
// 화면 초기화 로직 수행
// ....
// 서버 데이터 가져오기 (시간이 걸리는 작업이 있다고 가정)
await new Promise((resolve) => setTimeout(resolve, 500));
// v-if 를 통해 onMounted 함수 마지막 부분에서 시트객체 생성
createSheet.value = true;
});
</script>
<template>
<h1>IBSheet + Vue</h1>
<IBSheetVue v-if="createSheet" :options="sheetOptions" :style="customStyle" />
</template>
| product | version | desc |
|---|---|---|
| core | 8.3.0.0 | 기능 추가 |