我想问一个问题。
让我们说我有一个网格形式。在这个网格中我有两个字段。第一个字段是orderId,第二个字段是invoiceId。 每个字段都有一个重载的修改方法。
让我们说我的要求是,如果你在第一个字段中填写orderId,那么invoiceId应该自动填写在字段2中。同样应该以对立的方式发生。如果我填写invoiceId,那么自动相关的orderId应该在field1中自动完成。
例如,如果注释掉一个方法的相关代码,那么工作正常,但只能在一个方向上进行。
但如果我希望它能为两个方向工作,我的斧头客户就会停止工作。 通过修改后的方法看起来像无限循环,debuger无法帮助我。
我的决定是......对于这种修改后的方法是否存在重叠问题的适当解决方案?
modified()// method for invoice Field
{
SalaryProvRevisions table = SalaryProvRevisions_ds.getFirst(1) ? SalaryProvRevisions_ds.getFirst(1) :SalaryProvRevisions_ds.cursor();
table.OrderId=SalarayProvInvoiceHandler::getOrderIds(table.InvoiceId);
.
.
.
.
}
modified()// method for ordeid field
{
SalaryProvRevisions table = SalaryProvRevisions_ds.getFirst(1) ? SalaryProvRevisions_ds.getFirst(1) : SalaryProvRevisions_ds.cursor();
table.InvoiceId=SalarayProvInvoiceHandler::getInvoiceId(table.OrderId);
.
.
.
.
}
当然这个故事有一些其他的问题,比如一个orderId可以与很多invoiceid有关..但已经解决了它们。
非常感谢,
尼科斯
答案 0 :(得分:3)
您的modified
方法在可能的方法开头没有调用super()
。此外,由于缺少返回类型,所列出的方法无法编译。
我建议您使用表格的modifiedField
方法进行自定义。
public void modifiedField(FieldId _fieldId)
{
super(_fieldId);
switch (_fieldId)
{
case fieldnum(SalaryProvRevisions, OrderId):
this.InvoiceId = SalaryProvRevisions::getInvoiceId(this.OrderId);
break;
case fieldnum(SalaryProvRevisions, InvoiceId):
this.OrderId = SalaryProvRevisions::getOrderId(this.InvoiceId);
break;
}
}
我会将get方法的位置移动到它们真正属于的表本身。