I found the answer to my question. Here is how I have it working for cell validation inside a grid component. This will check for validation and mark a single cell in the grid as invalid
if (record.get("type") === "ROW_HEIGHT" && record.get("apply_before") === true)
{
var rangeFrom = record.get("range_from");
var rangeTo = record.get("range_to");
if ((rangeFrom !== "") && (rangeTo !== "")) {
if ((rangeFrom.match(/[^0-9]+$/) !== null) || (rangeTo.match(/[^0-9]+$/) !== null)) {
var store = MrEditor.excelLayout.overrideColumnGrid.getStore();
var view = MrEditor.excelLayout.overrideColumnGrid.getView();
var error = false;
var rangeFromFailed = false;
var rangeToFailed = false;
var columnLength = MrEditor.excelLayout.overrideColumnGrid.columns.length;
for (var i = 0; i < columnLength; i++) {
var cell = view.getCellByPosition({row: idx, column: i});
cell.removeCls("x-form-invalid-field");
cell.set({'data-errorqtip': ''});
var fieldName = MrEditor.excelLayout.overrideColumnGrid.columns[i].dataIndex;
if (fieldName === 'range_from') {
rangeFromFailed = false;
if (rangeFrom.match(/[^0-9]+$/) !== null)
rangeFromFailed = true;
if (rangeFromFailed) {
cell.addCls("x-form-invalid-field"); //add default invalid styling to fcell in error state
cell.set({'data-errorqtip': 'Range From must be NUMERIC'}); //custom error message
error = true;
}
}
else if (fieldName === 'range_to') {
rangeToFailed = false;
var cell = view.getCellByPosition({row: idx, column: i});
if (rangeTo.match(/[^0-9]+$/) !== null)
rangeToFailed = true;
if (rangeToFailed) {
cell.addCls("x-form-invalid-field"); //add default invalid styling to fcell in error state
cell.set({'data-errorqtip': 'Range To must be NUMERIC'}); //custom error message
error = true;
}
}
}
isValid = false;
}