Dynamics AX — окрашивание нескольких ячеек сетки в разные цвета

Есть ли в Dynamics AX 2012 способ изменить цвет фона нескольких ячеек на разные цвета?

Order Status     Ship Status     Order ID
[green]          [red]           SO-1234
[green]          [green]         SO-1235
[red]            [red]           SO-1236

Я написал переопределение displayOption, которое может изменить цвет одной ячейки, но кажется, что все изменения применяются в конце, поэтому любой последний указанный вами цвет применяется ко всем ячейкам.

_options.backColor(46080); //green
_options.affectedElementsByControl(OrderStatus.id());

//is there anyway to apply the first change, so I can make a second one?

_options.backColor(255); //red
_options.affectedElementsByControl(ShipStatus.id());

В приведенном выше коде оба цвета фона ячейки будут красными.

Какие-либо предложения?

Спасибо


person Brad    schedule 17.01.2013    source источник
comment
[Изменить цвет фона столбца в сетке][1] [1]: stackoverflow.com/questions/12621719/ См. ссылку выше, которая может вам помочь...   -  person Mohd Saddaf khan    schedule 21.01.2013
comment
@MohdSaddafkhan Я думаю, что вопрос заключается в том, возможно ли иметь несколько цветов на одной линии сетки. Я не думаю, что это возможно.   -  person David Lawson    schedule 21.01.2013
comment
Да, запрос состоит в том, чтобы покрасить две клетки в одной строке в два разных цвета. Я уже реализовал раскраску одной ячейки. Спасибо.   -  person Brad    schedule 22.01.2013


Ответы (2)


У меня была аналогичная задача, и я не нашел способа сделать это в Axe (ну, технически вы могли бы попробовать Управление столом, но я настоятельно рекомендую вам НЕ делать этого - вы в конечном итоге будете ругаться вслух).

Я реализовал пользовательский элемент управления WPF и использовал этот пост. как шаблон. Это небольшой учебник (найденный в ответе № 7), в котором показано, как реализовать преобразователь фона ячейки во встроенном элементе управления сеткой данных WPF для выполнения задачи.

После его реализации вы можете заполнить свою сетку данных с помощью LINQ (при использовании AX 2012 R2), веб-служб или передачи временной таблицы — существует множество способов доступа к данным AX.

Возможно, это не окончательное решение, но оно работает.

person Maciej    schedule 29.01.2013

Я сделал это с помощью табличного элемента управления (хотя Мацей советовал этого не делать). Все работает без проблем.

Вам нужно добавить элемент управления table, который получает ваши данные, и установить для свойства ColorScheme значение RGB.

Затем переопределите FormControl editControl(int column, int row). Вы можете получить доступ к каждому значению с помощью value = data.cell(column, row).data();, где data — это имя элемента управления таблицей. Помните, что вам нужно добавить элемент управления с правильным типом данных в элемент управления таблицы и дать ему имя. Также установите для свойства ColorScheme значение RGB.

Если вы получили значения RGB для желаемого цвета фона, установить этот цвет можно с помощью

RealEdit.backgroundColor(WinAPI::RGB2int(real2int(R),real2int(G),real2int(B)));

RealEdit — имя добавляемого элемента управления.

Я сделал это, чтобы отобразить матрицу, заполненную значениями от 0 до 1, и отобразить наложение цветового градиента в диапазоне от зеленого до красного. См. эту ссылку, если вам нужна дополнительная информация о преобразовании цвета.

person Nico    schedule 11.03.2014