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 它们真正属于的地方。
我想请教一个问题。
假设我有一个表格表格。在这个网格中,我有两个字段。第一个字段是 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 它们真正属于的地方。