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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.11.2018, 15:09   #1  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Вывести на форму количество выбранных записей грида
Собственно, вопрос у́же: за какой именно метод "зацепить" подсчет этих самых записей.

Лично мне понравился selectionChanged() на датасорсе, но в 2009-й его, по несчастью, нет. А у меня таки 2009-я.

Any idea?
__________________
Best Regards,
Roman
Старый 22.11.2018, 15:25   #2  
Pokersky09 is offline
Pokersky09
Участник
 
43 / 60 (3) ++++
Регистрация: 15.11.2012
Адрес: Turkey
В AX2012 и в D365

X++:
private Array   recordsMarkedArray;
int cntMarkedLines;
recordsMarkedArray = datasource.recordsMarked(); 
cntMarkedLines = recordsMarkedArray.lastIndex();
Если Маркировки нет, и просто стоит выделение на одном курсоре, верент 1.

Посмотрите класс MultiSelectionHelper, может пригодится
Старый 22.11.2018, 15:37   #3  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от Pokersky09 Посмотреть сообщение
В AX2012 и в D365

datasource.recordsMarked();

Посмотрите класс MultiSelectionHelper, может пригодится
Повторяю - у меня 2009-я. Про красивости в 2012 в курсе, не у меня их нет.
__________________
Best Regards,
Roman
Старый 22.11.2018, 15:50   #4  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
А если повесить подсчет на метод mark грида? Должно заработать.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.
Старый 22.11.2018, 15:58   #5  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от Weez Посмотреть сообщение
А если повесить подсчет на метод mark грида?
Нет в 2009-й метода mark() на гриде.
__________________
Best Regards,
Roman
Старый 22.11.2018, 16:05   #6  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
Упс, перепутал, на enter, попробовал воспроизвести - работает.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.
За это сообщение автора поблагодарили: RVS (3).
Старый 22.11.2018, 16:51   #7  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Спасибо.
__________________
Best Regards,
Roman
Старый 22.11.2018, 16:52   #8  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Я бы просто повесил кнопку, по нажатию на которую рассчитывал это самое количество
А потом убедил бы пользователей что это есть пример Майкрософт бест практис
__________________
С уважением,
Вячеслав
Старый 23.11.2018, 07:34   #9  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Есть мнение, что сюда у датасорса пихать можно вызов подсчета - markChanged, active, executeQuery.
Но будьте готовы к тому, что какая-нибудь Йаркая и Свободная Личность™ сделает выделение всех записей на гриде по "жирной" таблице с парой сотен тыщ записей и будет Вам мозг выносить из-за того, что у нее все зависнет, пока идет перебор пометки и подсчет..
__________________
Мы летаем, кружимся, нагоняем ужасы ...
За это сообщение автора поблагодарили: RVS (3), Stitch_MS (2).
Старый 23.11.2018, 12:02   #10  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
А почему бы не проэмулировать галочку в AX2012 в AX2009? Она будет edit-методом, которая запихивает в Set RecId выделенной записи (Да - RecId есть в Set-е и Нет - нет в Set-е).
Общее количество выделенных записей - это количество элементов в Set-е (считается быстро).

Делаем дисплей-метод (не в гриде само собой ))), в котором возвращаем количество элементов в Set-е.

Плох такой вариант?

Пользователей обучить пользоваться галкой вместо Ctrl. По опыту - привыкают быстро и хотят повторения на других формах ))
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 23.11.2018 в 12:05.
Старый 23.11.2018, 12:49   #11  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Зачем все это понадобилось: есть форма, на которой отображаются данные о файлах, прилетевших в результате некой "интеграции с". В динамике иногда интересно количество необработанных, обработанных за период, ошибочных и т.п.

Отсюда и желание "посчитать выделенные".

А пользователи - пока что я и еще пара человек, которым эта форма интересна.

Цитата:
Сообщение от sukhanchik Посмотреть сообщение
А почему бы не проэмулировать галочку в AX2012 в AX2009? ...
Пользователей обучить пользоваться галкой вместо Ctrl. По опыту - привыкают быстро и хотят повторения на других формах ))
Мне так делать не хочется. Выбирать сотню-другую файлов из пары тысяч по одному - ИМХО конкретно неудобно )))

Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Есть мнение, что сюда у датасорса пихать можно вызов подсчета - markChanged, active, executeQuery
На active() и executeQuery() - ИМХО избыточно. За markChanged() - спасибо, оно, как выяснилось, отрабатывает именно случай выбора "нажатием стрелочки при нажатом Shift". При этом "выбор мышом + Shift" отрабатывает enter() на Grid-е.

Замечательно... выходит (с) Иа-Иа.
__________________
Best Regards,
Roman
Старый 23.11.2018, 12:59   #12  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от RVS Посмотреть сообщение
На active() и executeQuery() - ИМХО избыточно.
active() - наверное, да, лишним будет...

А вот executeQuery() - надо проверить, срабатывает ли markChanged() при наличии пометки и последующей фильтрации датасорса, когда помеченные записи после фильтрации частично или полностью оказыаются скрытыми.

Если нет, то без вызова подсчета после отработки super() в executeQuery() можно увидеть пустой грид и ненулевое кол-во помеченных - не совсем адекватная картина получается
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 23.11.2018, 13:19   #13  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от RVS Посмотреть сообщение
Мне так делать не хочется. Выбирать сотню-другую файлов из пары тысяч по одному - ИМХО конкретно неудобно )))
А как записи будут выделяться? Через Ctrl? Еще более неудобно. Через Ctrl+A после того, как будет наложен фильтр? Можно сделать кнопку типа "Пометить все записи" и / или "Пометить выделенные" (а выделенные перебирать штатным способом обхода выделенных строк)
__________________
Возможно сделать все. Вопрос времени
Старый 23.11.2018, 13:57   #14  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
Еще в методе task() формы лучше обрабатывать событие 778 (когда пользователь нажимает CTRL+A), туда тоже добавить пересчет.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Массовый апдейт выбранных записей IKA DAX: Функционал 24 14.08.2014 16:29
Количество записей после фильтрации по сетке sable102 DAX: Программирование 1 31.05.2012 12:56
Как вывести форму в верхнем левом углу? miklenew DAX: Программирование 7 09.02.2009 13:53
Количество выделенных записей Mila DAX: Программирование 12 23.06.2006 11:08
Нужно подсчитать количество записей во всех таблицах Аксапты? Hidden DAX: Программирование 7 11.11.2005 15:20

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

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

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