![]() |
#1 |
Участник
|
событие выделения строк в grid
Здравствуйте, господа.
Не подскажет ли кто, есть ли возможность отследить в коде событие маркирования пользователем строк. Имеется ввиду кнопки слева и выделение - всё. С уважением, Дмитрий. |
|
![]() |
#2 |
Участник
|
Попробуйте перекрыть метод markChanged() на датасорсе.
Он, вроде, как раз и сообщает об изменениях вот этой части контрола.
__________________
If it ain't broke, take it apart and find out why (с) |
|
![]() |
#3 |
Участник
|
Большое спасибо, Александр!
А есть ли возможность определить каккая именно кнопка была нажата. Все или конкретная запись? С уважением, Дмитрий. Последний раз редактировалось DmitryK; 16.03.2012 в 13:48. |
|
![]() |
#4 |
Administrator
|
Цитата:
X++: FormDataSource formDS; Common cursor; ; formDS = youTable_ds; if (formDS.anymarked()) { for (cursor = formDS.getFirst(1); cursor; cursor = formDS.getNext()) { myMethodProcess (cursor); } } else { myMethodProcess(formDS.cursor()); }
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Спасибо за пример кода. В общем, для проверки маркирования я нечто подобное и использовал (ds.getFirst(1)). Интересно было определить именно маркирование <все>. За подсказку БОЛЬШОЕ спасибо Сергею.
С уважением, Дмитрий. Последний раз редактировалось DmitryK; 16.03.2012 в 16:46. |
|
![]() |
#7 |
Участник
|
Здравствуйте! Я хотел бы задать уточняющий вопрос.
Правильно ли я понимаю, что метод FormDataSource.defaultMark() должен срабатывать как событие при нажатии пользователем кнопки в гриде в левом верхнем углу? Просто у меня почему-то ни в 4.0, ни в 3.0 не срабатывает ![]() |
|
![]() |
#8 |
Участник
|
Это скорее свойство
Т.е. перекрываете markChanged(), а внутри проверяете X++: if (FormDataSource.anyMarked()) { if (FormDataSource.defaultMark()) { // выбрано все } else { // выбрана конкретная запись } }
__________________
If it ain't broke, take it apart and find out why (с) Последний раз редактировалось Alexanderis.ua; 23.05.2012 в 16:30. |
|
![]() |
#9 |
Участник
|
Спасибо, но markChanged(), к сожалению, появилось только в 2009, а в 4.0 его нет.
В MSDN про defaultMark() написано: "This method is executed when a user clicks the top-left corner in a grid control to select all the records that are in the grid." По идее должно быть как событие... Последний раз редактировалось PMS; 23.05.2012 в 16:41. |
|
![]() |
#10 |
Участник
|
в AX2009 тоже не срабатывает
![]() Есть подозрение, что этот баг связан с тем, что для вызова этого метода система внутри себя использует ссылку не на FormDataSource, а на его базовый класс FormObjectSet. Который почему-то иногда забывает что его методы могут быть перекрыты на форме. ![]() Конечно от этого ни холодно, ни жарко. Но есть надежда что в AX2012 заработает ![]() Последний раз редактировалось S.Kuskov; 24.05.2012 в 07:59. |
|
![]() |
#11 |
Участник
|
S.Kuskov, спасибо за развернутый ответ!
Может быть тогда есть какие-то другие возможности отловить событие выбора всех записей в гриде вышеуказанным способом? |
|
![]() |
#12 |
Программатор
|
Вам для чего это нужно? Что хотите получить на выходе?
|
|
![]() |
#13 |
Axapta
|
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
![]() |
#14 |
MCP
|
Цитата:
X++: formDataSourceMarks = FormDataSourceMarks::construct(); formDataSourceMarks.parmFormDataSource(formDataSource); formDataSourceMarks. getMarksFromDataSource(); Последний раз редактировалось kornix; 24.05.2012 в 13:23. |
|
![]() |
#15 |
Участник
|
|
|
![]() |
#16 |
Участник
|
Цитата:
![]() ![]() |
|
![]() |
#17 |
Участник
|
Цитата:
![]()
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#18 |
Участник
|
|
|
![]() |
#19 |
Участник
|
|
|
![]() |
#20 |
MCP
|
|
|