首先,覆盖表的方法insert()
,如:
public void insert()
{
;
this.FieldB = this.FieldA * 2;
super();
}
然后覆盖update()
,如:
public void update()
{
if (this.FieldA == this.orig().FieldA && this.FieldB != this.orig().FieldB)
{
this.FieldA = this.FieldB/2;
}
else
{
this.FieldB = this.FieldA * 2;
}
super();
}
这些仅仅是例子,使用你自己的判断方法应该被忽略。最后,覆盖modifiedField()
,当字段在形式手动修改将被仅用于:
public void modifiedField(fieldId _fieldId)
{
;
super(_fieldId);
switch (_fieldId)
{
case fieldnum(MyTable, FieldA) :
this.FieldB = this.FieldA * 2;
break;
case fieldnum(MyTable, FieldB) :
this.FieldA = this.FieldB/2;
break;
}
if (this.isFormDataSource())
this.dataSource().refresh();
}
P.S.请注意,当您使用doinsert()
,doupdate()
或skipDataMethods()
时,不会调用insert()
和update()
。
来源
2011-05-03 10:35:44
10p
是否真的有必要重写modifiedField?不要插入,更新方法覆盖用户通过表单编辑? 另外,感谢您的答案。 – 2011-05-03 11:07:55
如果'modifiedField()'被覆盖并且用户更改了FieldA,则FieldB将立即更改。否则,只有在保存记录时才会更改。数据一致性并不重要,只是为了用户便利而添加。 – 10p 2011-05-03 11:34:51
@ 10p:何时调用insert()和update()?你能再解释一下吗? – piku 2011-05-03 13:07:40