AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.11.2016, 01:12   #1  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Dax12 форма ListPage: как скрыть/отобразить MenuItemButton без смены фокуса записи в гриде
Dax2012 R3
Добрый вечер, подскажите пожалуйста , с таким вопросом.
Есть задача-на форме CustTableListPage нужно :
1. При смене фокуса
1.1 отобразить в ActionPane кнопку менюитем «Включить», скрыть кнопку менюитем «Выключить», если данное булево поле таблицы CustTable имеет значение Выключено,
1.2 отобразить кнопку менюитем «Выключить», скрыть кнопку менюитем «Включить», если данное булево поле табилцы CustTable имеет значение Включено
Я смогла сделать отображение одного меню menuItemсButton и скрытие другого меню menuItemсButton при переходе от одной записи к другой в CustTableListPage в зависимости от значения данного булевого поля текущей записи
Для этого я в классе CustTableListPageInteraction я добавила метод
void VisibleCustSomeBlockButtons()
{this.listPage().actionPaneControlVisible(formControlStr(CustTableListPage, SomeBlock_On),CustTable.SomeBlock_On == NoYes::No);
this.listPage().actionPaneControlVisible(formControlStr(CustTableListPage, SomeBlock_Off),CustTable.SomeBlock_On == NoYes::Yes);}
я вызываю этот метод из метода public void selectionChanged() этого же класса.

2. .Скрытие/отображение menuItemButton без смены фокуса.
мне нужно сделать отображение одного menuItemButton и скрытие другого menuItemсButton на ActionPane в listPage (CustTableListPage) не переходя с одной записи на другую, а по выполнению классов ,которые меняют значение данного булевого поля в таблице CustTable.Т.е. нажали кнопку «Включить», запустился экземпляр класса выполнил некое действие , записал значение данного булевого поля в таблице CustTable =включено, и после этого кнопка «Включить» скрылась, отобразилась кнопка «Выключить.»
Я думала ,что п.2. будет работать после всего того ,что я сделала для п.1. Но п. 2. не работает.
кнопки не перерисовываются .но если я ухожу с данной записи и на нее возвращаюсь, то показывается уже новое,правильное состояние кнопок
подскажите пожалуйста, как добиться корректной работы в п.2
Старый 29.11.2016, 08:37   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Попробуйте следующие варианты :

1. Св-во AutoRefreshData.
2. Внутри вашей обработки, после выполнения кода обновления использовать *_ds.research(true), *_ds.findValue(...)
3. Посмотрите как работают стандартные кнопки в других формах, если на форме клиентов нет аналогичных доработок - например в форме Заказов, наверняка там после обработки документов меняется доступность кнопок журналов.
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: Aquarius (1).
Старый 29.11.2016, 11:11   #3  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Добрый день
спасибо ,но:
Св-во AutoRefreshData выставлено. не помогает.
*_ds.research(true), *_ds.findValue(...) нельзя сделатьв классе CustTableListPageInteraction который работает с формой listPage
Не могу пока найти решение.
Может кто то что -то еще посоветует.
Старый 29.11.2016, 12:50   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
InteractionClass

Перекройте кликет и делайте что хотите)
За это сообщение автора поблагодарили: Aquarius (1).
Старый 29.11.2016, 13:24   #5  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Спасибо за советы,
у меня вроде получилось сделать смену отображения кнопок без смены фокуса записи, просто добавив к моему вышеописанному коду поставление свойств АutoDeclaration =yes у этих "menuItemButton"ов. AutoRefresh=yes был до этого выставлен.
Best Practis error указал мне на это.
Но сейчас еще буду более детально проверять.
А, все-таки, правильно именно в методе public void selectionChanged() класса CustTableListPageInteraction вызывать метод этого же класса с
this.listPage().actionPaneControlVisible(formControlStr(CustTableListPage, SomeBlock_On),CustTable.SomeBlock_On == NoYes::No)?

Последний раз редактировалось Aquarius; 29.11.2016 в 13:51.
Старый 29.11.2016, 13:56   #6  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Цитата:
Сообщение от Aquarius Посмотреть сообщение
*_ds.research(true), *_ds.findValue(...) нельзя сделатьв классе CustTableListPageInteraction который работает с формой listPage
Надо не в CustTableListPageInteraction, а в классе который меняет данные.
За это сообщение автора поблагодарили: Aquarius (1).
Старый 29.11.2016, 16:06   #7  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Все таки не работает.
Столкнулась с тем что переданный в класс курсор таблицы с listpage содержит неправильное значение одного поля.код клиента правильный.
как такое может быть:
Старый 29.11.2016, 16:30   #8  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
Цитата:
Сообщение от Aquarius Посмотреть сообщение
Все таки не работает.
Столкнулась с тем что переданный в класс курсор таблицы с listpage содержит неправильное значение одного поля.код клиента правильный.
как такое может быть:
У query "CustTableListPage" список полей не динамический?
Старый 29.11.2016, 17:39   #9  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Напалм,
БОЛЬШОЕ-БОЛЬШОЕ СПАСИБО!
Ваш последний совет вроде помог)) Я в классе сделала отдельный курсор и его инициализировала по коду клиента из курсора,передаваемого в класс. и все заработало, из нового курсора я читаю правильное значение нужного мне поля..
но вот теперь еще вопрос.
У меня такие же кнопки на форме custTable, и когда я перехожу из custTablelistPage в форму custTable по Edit,нажимаю кнопку там, у меня меняется состояние отображения кнопок ,
закрываю форму custTable, попадаю в custTablelistPage,Там отображение не поменялось.
как программно обновить новое состояние отображения кнопок custTablelistPage, после выполнения класс не из custTablelistPage а из custTable.

Последний раз редактировалось Aquarius; 29.11.2016 в 18:17.
Старый 29.11.2016, 19:28   #10  
Napalm is offline
Napalm
Участник
 
80 / 88 (3) ++++
Регистрация: 23.05.2012
В форме "CustTable" перекрыть метод "close" и вызвать "reread" и "refresh" для датасорса из формы "CustTableListPage" (получается через "element.args().record().dataSource()").
Старый 30.11.2016, 14:36   #11  
Aquarius is offline
Aquarius
Участник
 
139 / 29 (1) +++
Регистрация: 08.02.2007
Адрес: Одесса
Спасибо, за последний совет. именно так получилось.custTablelistPage успешно обновляется
public void close()
{
FormDataSource callerDataSource;
int positon;

;

If (element.args() &&
element.args().record())
{
callerDataSource = element.args().record().dataSource();

if (callerDataSource)
{
position =callerDataSource.getPosition();
callerDataSource.research();
callerDataSource.refresh();
callerDataSource.setPosition(position);

}
}

super();
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
EP Ax 4.0 Web-форма. Частично некоторые поля дублируются с предыдущей записи. vasiliy DAX: Программирование 2 29.10.2008 14:57
Открытие формы с деталями активной записи в гриде sweeper DAX: Программирование 4 19.09.2008 15:55
Как выделить все записи в гриде скопировать и отправить в Excel??? velk DAX: Программирование 36 22.12.2005 14:35
Новые записи в таблице без генерации recId Perc DAX: Программирование 23 14.12.2005 18:10
Как отобразить записи sa2002as DAX: Программирование 1 12.06.2003 13:26

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:08.