从RC4升级到Aviarc 3.6.0后,屏幕上的FieldName不能为null或未定义错误

时间:2012-09-24 00:48:03

标签: aviarc

升级到Aviarc 3.6.0后,我们在其中一个屏幕上收到了上述错误。

屏幕出现错误的部分:

<custom:record-table bottom="40" width="100%" left="0" top="0" dataset="account-ds" class="list" name="accountlist-rc" >
    <column width="0" display-field="AccountName"  header="Accounts" field2="AccountCode"  allow-sort="n" />
</custom:record-table>

请注意,我们自定义了记录表小部件,以允许为每个列(field2和field3)指定2个附加字段,因此这是列中field2的来源。

1 个答案:

答案 0 :(得分:1)

在调查完成的更改以允许为记录表的每一列指定多于1个字段后,如下所示(在RecordTable.js的 update 方法中,从行开始670):

var field = this._datasetRow.getFieldObject(column.attributes['display-field']);
var field2 = this._datasetRow.getFieldObject(column.attributes['field2']);
var field3 = this._datasetRow.getFieldObject(column.attributes['field3']);

var text = field.getValue();
var text2 = field2.getValue();
var text3 = field3.getValue();

由于屏幕上的列规范(问题中的代码段)没有为 field3 属性设置任何值

var field3 = this._datasetRow.getFieldObject(column.attributes['field3']);

失败并抛出错误。方法 getFieldObject 总是希望传递值,即使它应该足够聪明以满足null / undefined值。

为了解决这个问题,代码被重构如下:

var field = this._datasetRow.getFieldObject(column.attributes['display-field']);
var text = field.getValue();
if (column.attributes['field2'] != null) {
    var field2 = this._datasetRow.getFieldObject(column.attributes['field2']);
    var text2 = field2.getValue(); 
}
if (column.attributes['field3'] != null) {
    var field3 = this._datasetRow.getFieldObject(column.attributes['field3']);
    var text3 = field3.getValue();
}

之后,窗口小部件代码的自定义部分只需要满足 text2 text3 属性的未定义值。