Grid 使用EXTjs模型&x27;网格中的验证程序属性

Grid 使用EXTjs模型&x27;网格中的验证程序属性,grid,extjs4,Grid,Extjs4,我在Extjs4中有一个非常标准的网格->存储->模型体系结构。要求每个记录中的八个字段中有五个是必填字段,因此我想使用Model valdiations配置: Ext.define('TransferRecord', { extend: 'Ext.data.Model', fields: transferRecordFields, idProperty: 'RID', validations: [ { type: 'presence', field: '

我在Extjs4中有一个非常标准的网格->存储->模型体系结构。要求每个记录中的八个字段中有五个是必填字段,因此我想使用Model valdiations配置:

    Ext.define('TransferRecord', { extend: 'Ext.data.Model',
    fields: transferRecordFields,
    idProperty: 'RID',
    validations: [
    { type: 'presence', field: 'FNAME' },
    { type: 'presence', field: 'LNAME' },
    { type: 'presence', field: 'GENDER' },
    { type: 'presence', field: 'DOB' },
    { type: 'presence', field: 'TRANSFER_TYPE'}]
});
这类工作-当存储同步时,除非定义了所有这些字段,否则它不会将新记录同步到数据库。但是,除了同步没有成功完成之外,没有任何反馈给用户

理想情况下,我希望突出显示有问题的字段,以便用户知道哪些字段仍然需要值(反之,当它们正常时清除突出显示)。我知道,如果我为每个记录调用record.validate,我可以得到一个错误对象列表,但我不确定如何将该信息转换到第X行的单元格中,字段“FNAME”需要更改颜色(或找到该单元格以便应用更改的最佳方法)


我觉得我缺少了一些简单的东西-可能有一个API已经在这里帮助了我,但我找不到它。

我发现EXTjs示例中的示例自定义渲染器不完整-渲染器确实使用了很多示例中没有显示的额外参数

通过定义以下渲染器函数并将其分配给每列,我可以使其正常工作:

    function mandatoryColumnRenderer(value, metaData, record, rowIndex, colIndex, store) {
        var errors = record.validate();
        if (errors.getByField(this.columns[colIndex].dataIndex).length > 0) {
            metaData.style = 'background-color: Gold;'
        }
        return value;
} 

虽然我确实找到了满足我特定需求的答案(突出显示为空的必填字段),但我也对在每个单元格中显示工具提示以定义用户问题的解决方案感兴趣。我的解决方案不需要它,但它可能对其他人有帮助。