2

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

Я нашел это:

Adjusting column width on form control lookup

Но я не понимаю, где именно и что добавить.

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

Обновление 1:

я получил это работает с формой поиска под названием, как это:

Args args; 
FormRun formRun; 
; 

args = new Args(); 

args.name(formstr(LookupOMOperatingUnit)); 
args.caller(_control); 
formRun = classfactory.formRunClass(args); 
formRun.init(); 
_control.performFormLookup(formRun); 

и в методе инициализации этой формы я добавил:

public void init() 
{ 
    super(); 
    element.selectMode(OMOperatingUnit_OMOperatingUnitNumber); 
} 

что означает поле, которое мне действительно нужно.

enter image description here

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

Для того, чтобы сделать его похожим поиском, я сохранил стиль дизайна, как Auto, но изменил WindowType к Popup, HideToolBar к Да и Рама к Border в ,

+0

Просто измените свойство 'Style' на * Lookup * –

+1

Посмотрите на формы' FiscalCalendarYearLookup' 'init' и' run', чтобы добавить правильное поведение. –

+0

Вы можете создать альтернативный расширенный тип данных для целевого поля, тогда вам не нужен код вызова. –

ответ

4

Наверное, лучший маршрут - это индивидуальный поиск и изменение расширенного типа данных ключевого поля, чтобы отразить это. Таким образом, изменение отражается во всех местах. В качестве примера см. Форму FiscalCalendarYearLookup и EDT FiscalYearName.

Если вам нужно только изменить одно место, то простой способ - переопределить performFormLookup в вызывающей форме. Вы также должны переопределить свойство DisplayLength расширенного типа данных длинного поля.

public void performFormLookup(FormRun _form, FormStringControl _formControl) 
{ 
    FormGridControl grid = _form.control(_form.controlId('grid')); 
    grid.autoSizeColumns(false); 
    super(_form,_formControl); 
} 

Это не поможет вам, если у вас нет формы, которая может не иметь место в этом сценарии отчета.

Начиная с AX 2009 ядро ​​по умолчанию автоматически обновляет размеры элементов управления на основе фактического содержимого записи. Это было причиной большого разочарования, поскольку размеры были небольшими, когда не было записей, и эти размеры были сохранены! В некоторых ситуациях производительность автообновления была изначально плохой. В качестве запоздалой мысли был применен метод управления сеткой autoSizeColumns, но, к сожалению, он не был представлен как свойство.

+0

Спасибо за ваш ответ .. есть ли шанс, что я могу создать форму, открыть ее из метода поиска, выбрать строку и затем вернуть нужное поле? Возможно, что-то вроде этого: https://ax4dev.wordpress.com/tag/performformlookup/ –

+0

Почему вы хотите сделать это именно так? Придерживайтесь стандартного способа делать вещи, если это возможно. –