Axapta 动力学ax x++;网格修正法
我想请求撤销 假设我有一个表格。在这个网格中,我有两个字段。第一个字段是orderId,第二个字段是invoiceId。 每个字段都有一个重载的修改方法 假设我的要求是,如果您在第一个字段中填写orderId,那么invoiceId应该自动填写在字段2中。同样的事情也应该以相反的方式发生。如果我填写了invoiceId,那么相关的orderId应该自动位于field1中 例如,如果注释掉一个方法的相关代码,则可以很好地工作,但只能在一个方向上工作 但如果我想让它双向工作,我的ax客户端就停止工作。 看起来像是通过修改的方法进行无限循环,调试程序无法帮助我 我的假设是…这个修正方法重叠问题有没有合适的解决方案Axapta 动力学ax x++;网格修正法,axapta,x++,Axapta,X++,我想请求撤销 假设我有一个表格。在这个网格中,我有两个字段。第一个字段是orderId,第二个字段是invoiceId。 每个字段都有一个重载的修改方法 假设我的要求是,如果您在第一个字段中填写orderId,那么invoiceId应该自动填写在字段2中。同样的事情也应该以相反的方式发生。如果我填写了invoiceId,那么相关的orderId应该自动位于field1中 例如,如果注释掉一个方法的相关代码,则可以很好地工作,但只能在一个方向上工作 但如果我想让它双向工作,我的ax客户端就停止工作
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相关。。但是已经解决了
非常感谢
Nikos您的
修改的方法在方法开始时没有调用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方法的位置移到它们真正属于的表本身。是的,我将其移到表级别,效果很好。我认为您也是正确的……getInvoiceId和getOrderId方法也应该在表中。谢谢。