dynamics ax x++网格修改方法

Dynamics ax x++ grid modified method

我想请教一个问题。

假设我有一个表格表格。在这个网格中,我有两个字段。第一个字段是 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 相关..但已经解决了。

非常感谢,

尼克斯

您的 modified 方法在方法的开头没有调用 super()可能是 的原因。此外,由于缺少 return 类型,您列出的方法无法编译。

我会建议您在 table 的 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 方法的位置移动到 table 它们真正属于的地方。