22.11.2018, 15:09 | #1 |
Сенбернар
|
Вывести на форму количество выбранных записей грида
Собственно, вопрос у́же: за какой именно метод "зацепить" подсчет этих самых записей.
Лично мне понравился selectionChanged() на датасорсе, но в 2009-й его, по несчастью, нет. А у меня таки 2009-я. Any idea?
__________________
Best Regards, Roman |
|
22.11.2018, 15:25 | #2 |
Участник
|
В AX2012 и в D365
X++: private Array recordsMarkedArray; int cntMarkedLines; recordsMarkedArray = datasource.recordsMarked(); cntMarkedLines = recordsMarkedArray.lastIndex(); Посмотрите класс MultiSelectionHelper, может пригодится |
|
22.11.2018, 15:37 | #3 |
Сенбернар
|
Повторяю - у меня 2009-я. Про красивости в 2012 в курсе, не у меня их нет.
__________________
Best Regards, Roman |
|
22.11.2018, 15:50 | #4 |
Участник
|
А если повесить подсчет на метод mark грида? Должно заработать.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
22.11.2018, 15:58 | #5 |
Сенбернар
|
Нет в 2009-й метода mark() на гриде.
__________________
Best Regards, Roman |
|
22.11.2018, 16:05 | #6 |
Участник
|
Упс, перепутал, на enter, попробовал воспроизвести - работает.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
|
За это сообщение автора поблагодарили: RVS (3). |
22.11.2018, 16:51 | #7 |
Сенбернар
|
Спасибо.
__________________
Best Regards, Roman |
|
22.11.2018, 16:52 | #8 |
северный Будда
|
Я бы просто повесил кнопку, по нажатию на которую рассчитывал это самое количество
А потом убедил бы пользователей что это есть пример Майкрософт бест практис
__________________
С уважением, Вячеслав |
|
23.11.2018, 07:34 | #9 |
Мрачный тип
|
Есть мнение, что сюда у датасорса пихать можно вызов подсчета - markChanged, active, executeQuery.
Но будьте готовы к тому, что какая-нибудь Йаркая и Свободная Личность™ сделает выделение всех записей на гриде по "жирной" таблице с парой сотен тыщ записей и будет Вам мозг выносить из-за того, что у нее все зависнет, пока идет перебор пометки и подсчет..
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
За это сообщение автора поблагодарили: RVS (3), Stitch_MS (2). |
23.11.2018, 12:02 | #10 |
Administrator
|
А почему бы не проэмулировать галочку в AX2012 в AX2009? Она будет edit-методом, которая запихивает в Set RecId выделенной записи (Да - RecId есть в Set-е и Нет - нет в Set-е).
Общее количество выделенных записей - это количество элементов в Set-е (считается быстро). Делаем дисплей-метод (не в гриде само собой ))), в котором возвращаем количество элементов в Set-е. Плох такой вариант? Пользователей обучить пользоваться галкой вместо Ctrl. По опыту - привыкают быстро и хотят повторения на других формах ))
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 23.11.2018 в 12:05. |
|
23.11.2018, 12:49 | #11 |
Сенбернар
|
Зачем все это понадобилось: есть форма, на которой отображаются данные о файлах, прилетевших в результате некой "интеграции с". В динамике иногда интересно количество необработанных, обработанных за период, ошибочных и т.п.
Отсюда и желание "посчитать выделенные". А пользователи - пока что я и еще пара человек, которым эта форма интересна. Цитата:
Цитата:
Замечательно... выходит (с) Иа-Иа.
__________________
Best Regards, Roman |
|
23.11.2018, 12:59 | #12 |
Мрачный тип
|
active() - наверное, да, лишним будет...
А вот executeQuery() - надо проверить, срабатывает ли markChanged() при наличии пометки и последующей фильтрации датасорса, когда помеченные записи после фильтрации частично или полностью оказыаются скрытыми. Если нет, то без вызова подсчета после отработки super() в executeQuery() можно увидеть пустой грид и ненулевое кол-во помеченных - не совсем адекватная картина получается
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
23.11.2018, 13:19 | #13 |
Administrator
|
А как записи будут выделяться? Через Ctrl? Еще более неудобно. Через Ctrl+A после того, как будет наложен фильтр? Можно сделать кнопку типа "Пометить все записи" и / или "Пометить выделенные" (а выделенные перебирать штатным способом обхода выделенных строк)
__________________
Возможно сделать все. Вопрос времени |
|
23.11.2018, 13:57 | #14 |
Участник
|
Еще в методе task() формы лучше обрабатывать событие 778 (когда пользователь нажимает CTRL+A), туда тоже добавить пересчет.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|