在Grid中使用EXTjs Model的validators属性

时间:2011-08-31 16:23:31

标签: grid extjs4

我有一个非常标准的网格 - >商店 - > Extjs4中的模型体系结构。要求是每个记录中我的八个字段中有五个是强制性的,所以我想使用Model valdiations config:

    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已经帮助我了,但我找不到它。

1 个答案:

答案 0 :(得分:1)

我发现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;
}