useAsyncHandler를 true로 설정하면 지원 이벤트와 validator의 비동기 결과를 기다린 뒤 작업을 적용합니다. 기본값은 false입니다.
이 데모는 서버 응답을 기다리며 "확인 중.."이 표시되어, 응답 후 적용 시킵니다. 응답 전 취소는 Esc 키로 가능합니다.
기본 편집기를 사용합니다. 아래 demoServer는 모의 조회 함수이며, 실제 서비스에서는 서버 조회로 대체하십시오.
// 1. 응답값으로 상품 코드를 보정합니다.
AUIGrid.bind(myGridID, "cellEditEndBefore", async function (event) {
if (event.dataField === "code") {
return await demoServer.normalizeCode(event.value);
}
return event.value;
});
// 2. 주문 수량 칼럼의 editRenderer에 지정합니다.
editRenderer: {
type: "InputEditRenderer",
onlyNumeric: true,
validator: async function (oldValue, newValue, item) {
// { validate: true 또는 false, message: "검증 안내" }를 반환합니다.
return await demoServer.checkQuantity(newValue, item.stock);
}
}
// 3. 삭제를 허용하면 true, 거부하면 false를 반환합니다.
AUIGrid.bind(myGridID, "beforeRemoveRow", async function (event) {
return await demoServer.canRemove(event.items);
});
Esc는 그리드의 적용 대기를 취소합니다. 이미 시작한 서버 요청 자체를 중단하지는 않습니다.
상품 코드에 kb-101을 입력하십시오. 확인 후
KB-101로 바뀝니다.
cellEditEndBefore
주문 가능 수량보다 큰 값을 입력하십시오. 검증 안내가 표시되면 수량을 다시 입력할 수 있습니다.
editRenderer.validator
주문을 선택하고 삭제 버튼을 누르십시오. “작성 중” 주문만 삭제하고 “확정” 주문은 유지합니다.
beforeRemoveRow
비동기 지원 이벤트 (useAsyncHandler: true)
cellEditBegin, cellEditEndBefore, pasteBegin,
beforeInsertRow, beforeRemoveRow, beforeRemoveSoftRows,
beforeRemoveColumn, treeLazyRequest,
rowStateCellClick