我有一个非常标准的网格 - >商店 - > 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已经帮助我了,但我找不到它。
答案 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;
}