2016-09-21 3 views
3

Я хотел бы попросить quastion.Dynamics ax x ++ сетчатый модифицированный метод

Допустим, у меня есть сетка в форме. В этой сетке у меня есть два поля. Первое поле - это orderId, а второе поле - invoiceId. Каждое поле уже перегружено модифицированным способом.

Допустим, что мое требование состоит в том, что если вы заполняете orderId в первом поле, то invoiceId должен автоматически заполняться в поле 2. и то же самое должно происходить в противоположном направлении. Если я заполню invoiceId, то автоматически, связанный с этим порядок должен быть автоматически в поле 1.

Если, например, прокомментировать связанный код одного метода, он работает нормально, но только в одном направлении.

Но если я хочу, чтобы он работал для обоих направлений, мой топор-клиент переставал работать. Похож на бесконечную петлю с помощью модифицированных методов, и отладчик не может мне помочь.

My quastion is ... Существует ли какое-либо правильное решение для этой измененной проблемы, связанной с перекрытием?

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

ответ

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 также должны быть в таблице. Большое спасибо. –