动态ax x ++网格修改方法

问题描述 投票:3回答:1

我想问一个问题。

让我们说我有一个网格形式。在这个网格中我有两个字段。第一个字段是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有关..但已经解决了它们。

非常感谢,

尼科斯

axapta x++
1个回答
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方法的位置移动到它们真正属于的表本身。

© www.soinside.com 2019 - 2024. All rights reserved.