2016-09-21 30 views
3

我想問一個quastion。Dynamics ax x ++網格修改方法

可以說我在窗體中有一個網格。在這個網格中,我有兩個字段。第一個字段是orderId,第二個字段是invoiceId。 每個字段已經有一個重載的修改方法。

假設我的要求是,如果您在第一個字段中填寫orderId,那麼invoiceId應該自動填充到字段2中,並且相同的應該以相反的方式發生。如果我填寫了invoiceId,那麼automacally相關的orderId應自動在field1中。

如果例如註釋掉一種方法的相關代碼,則工作正常,但僅在一個方向上。

但是,如果我希望它爲兩個方向工作我的ax客戶端停止工作。 看起來像一個無限循環通過修改的方法和debuger不能幫助我。

我的quastion是...存在任何適當的解決方案,這種修改方法重疊問題?

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 ..但已經解決了他們。

非常感謝,

尼科斯

回答

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方法的位置移動到它們真正屬於的表本身。

+0

是的我把它移動到表級別,並運行良好。我認爲你也是正確的...方法getInvoiceId和getOrderId也應該在表中。 非常感謝。 –