переопределение опции отображения для окрашивания определенных строк в соответствии со значением из метода отображения

#axapta #x #dynamics-ax-2012 #dynamics-ax-2012-r2 #dynamics-ax-2012-r3

Вопрос:

Я пытаюсь переопределить displayOption в своей форме, чтобы я раскрашивал определенные строки в соответствии с определенными условиями, Когда мое состояние было связано с обычным полем, у меня не было проблем с этим, пример кода:

 public void displayOption(Common _record, FormRowDisplayOption _options)
{
 if (_record.(fieldnum(MY_Table,My_Field))=="YES")
 {
  _options.backColor(WinAPI::RGB2int(161,161,255));
 }
  super(_record, _options);
}
 

но моя проблема в том, что я хочу сделать условие на дисплее, которое не является нормальным полем

Комментарии:

1. Это метод отображения таблицы или метод отображения источника данных формы? Если он находится на столе, он должен работать при вашей начальной загрузке, но по мере изменения данных он может не работать и, вероятно, приведет к некоторому странному поведению. Что он делает?

2. Это метод отображения таблицы, если он должен работать, как я могу даже назвать его вместо поля?

3. Просто приведите _record к вашему фактическому буферу таблицы. Так что, если бы он был пригоден для продажи , вы бы создали SalesTable salesTable; «тогда делай salesTable = _record as SalesTable , тогда if (salesTable.tableDisplayMethod() == "whatever") «.

4. работает отлично, спасибо!

5. Отлично! Я изменил свой комментарий на ответ, чтобы помочь другим.

Ответ №1:

Метод отображения будет работать, вам просто нужно привести буфер Common _record к вашей таблице, после чего вы сможете получить доступ к методу таблицы.

Так что , если бы это было SalesTable так, вы бы создали:

 SalesTable      salesTable;

salesTable = _record as SalesTable;
if (salesTable.yourTableDisplayMethod == "whatever") { // Do something }
 

Затем вы можете использовать метод отображения в обычном режиме.