首先,覆蓋表的方法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