사용자 지정 행 유효성 검사
그리드 Row Validation만으로 부족한 경우, 행 편집 완료 시 그리드가 발생 시키는 onValidateRow 이벤트를 활용해서 셀 단위로 값을 검증할 수 있습니다.
onValdateRow 이벤트의 매개변수로 해당 셀의 field이름, 편집된 값 등이 넘어옵니다.
값을 검증한 후 이벤트의 반환값으로 에러 레벨과 메시지를 넘겨주면 그리드는 편집 완료(commit)하지 못하고 사용자에게 메시지를 표시합니다.
아래 버튼을 클릭해서 onValidateRow 이벤트를 적용 후 Quantity
와 UnitPrice
컬럼의 값을 변경해보세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
gridView.onValidateRow = function(grid, itemIndex, dataRow, inserting, values) {
console.log("onValidateRow:" + itemIndex + "," + dataRow + "," + inserting + "," + values.Quantity + "," + values.UnitPrice);
var error = {};
//validate Quantity
if (values.Quantity < 100) {
error.level = RealGridJS.ValidationLevel.ERROR;
error.message = "Quantity는 100 이상이어야 합니다.";
} else if (values.Quantity > 200) {
error.level = RealGridJS.ValidationLevel.WARNING;
error.message = "Quantity는 200보다 작아야 합니다.";
} else if (values.Quantity == 150) {
error.level = RealGridJS.ValidationLevel.INFO;
error.message = "Quantity 값이 150과 달라야 합니다.";
}
//validate Unit Price
if (values.UnitPrice < 30) {
console.log("values.UnitPrice < 30");
error.level = RealGridJS.ValidationLevel.ERROR;
error.message = "UnitPrice 30 이상이어야 합니다.'";
} else if (values.UnitPrice > 70) {
error.level = RealGridJS.ValidationLevel.WARNING;
error.message = "UnitPrice 70보다 작아야 합니다.";
} else if (values.UnitPrice == 50) {
error.level = RealGridJS.ValidationLevel.INFO;
error.message = "UnitPrice 값이 50과 달라야 합니다.";
}
return error;
}
레벨, 메시지, 에러 상태 등에 대해서는 Row Validation을 참조하세요.