12.04.2004, 19:28 | #1 |
Administrator
|
Хорошим тоном при разработке приложения Axapta считается предоставление пользователю возможности обработки нескольких выбранных записей нажатием одной кнопки.
Проблема Пользователь выбрал несколько записей в Grid'е и Вы хотите, чтобы созданная Вами обработка учитывала этот выбор. Обычно в случае, если выбранных записей нет, обрабатывается только текущая запись. Решение Объект класса FormDataSource содержит метод для распознавания ситуации множественного выбора: boolean anyMarked(). Этот метод возвращает true, если пользователь выбрал несколько записей в FormDataSource, используя Shift или Ctrl. Для перебора выбранных записей в классе FormDataSource есть методы Common getFirst([int _mark = 0, boolean _fetchAhead = true]) и Common getNext(). В случае, если первый аргумент в getFirst не равен 0, этот метод и метод getNext будут последовательно возвращать выбранные записи (иначе будут возвращены все записи в Data Source). Используя имеющиеся методы, можно организовать цикл с помощью оператора for. Пример В форме, в которой имеется Data Source с именем CustTable, имеет смысл следующая часть кода (наиболее вероятно ее появление в методе clicked какой-либо кнопки). <div class='XPPtop'>X++</div><div class='XPP'>CustTable CustTableEdit; [color=:green]// ... [/color][color=:blue]for[/color] (CustTableEdit = CustTable_ds.getFirst(1) [color=:blue]?[/color] [color=:green]// есть ли помеченные записи - [/color] CustTable_ds.getFirst(1) : [color=:green]// если есть, взять первую [/color] CustTable; [color=:green]// иначе взять текущую [/color] CustTableEdit; [color=:green]// продолжать до тех пор, пока есть записи для обработки [/color] CustTableEdit = CustTable_ds.getNext()) [color=:green]// взять потенциальную следующую запись [/color]{ [color=:green]// обработка CustTableEdit [/color] [color=:green]// ... [/color]}</div>
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
06.05.2010, 11:30 | #2 |
Модератор
|
Код: CustTable CustTableEdit; // ... for (CustTableEdit = CustTable_ds.getFirst(1) ? // есть ли помеченные записи - CustTable_ds.getFirst(1) : // если есть, взять первую CustTable; // иначе взять текущую CustTableEdit; // продолжать до тех пор, пока есть записи для обработки CustTableEdit = CustTable_ds.getNext()) // взять потенциальную следующую запись { // обработка CustTableEdit // ... }
__________________
This posting is provided "AS IS" with no warranties, and confers no rights. |
|