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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.08.2011, 13:50   #1  
axalex is offline
axalex
Участник
 
91 / 14 (1) ++
Регистрация: 14.03.2011
Цикл по строчкам Grid'а
Приветствую вас! Есть класс. Класс запускает форму с гридом для сбора данных отчета. В гриде создаем строчки. Подскажите как и как правильно пустить цикл по гриду (дата сорсу) для считывания полей?

X++:
anyType initDialog()
{
    Args     args = new Args();
    FormRun  formRun;
    Object   formRunObj;
    ;

    args.name(formstr("имя некой формы"));

    formRun = ClassFactory.formRunClass(args);
    formRun.init();
    formRunObj = formRun;

    formRun.run();
    formRun.wait();

    if(formRun.closedOk())
    {
        formRunObj = formRun;
        _beginDate = formRunObj.getBeginDate(); //получаем с формы
        _endDate = formRunObj.getEndDate(); //получаем с формы

        formRun.dataSource().cursor();
          ..........?..........
__________________
С уважением, Алексей.
Старый 16.08.2011, 13:56   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
на датасорсе getFirst() и getNext()
За это сообщение автора поблагодарили: axalex (1).
Старый 16.08.2011, 13:58   #3  
axalex is offline
axalex
Участник
 
91 / 14 (1) ++
Регистрация: 14.03.2011
getFirst() и getNext() - курсоры строк возвращать будет?
__________________
С уважением, Алексей.
Старый 16.08.2011, 14:03   #4  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Я бы передал в форму ссылку на вызывающий класс через element.Args().caller(), а дальше использовал бы методы класса при закрытии формы(методы canClose(), close()). Если таблица в которой создаются данные временная, то в init датасорса c именем MyTmpTable нужно вписать: MyTmpTable.setTmpData(myCallerClass.getTmpData()). Здесь метод getTmpData возращает ссылку на временную таблицу.
За это сообщение автора поблагодарили: axalex (1).
Старый 16.08.2011, 14:10   #5  
axalex is offline
axalex
Участник
 
91 / 14 (1) ++
Регистрация: 14.03.2011
Да-Временная.
__________________
С уважением, Алексей.
Старый 16.08.2011, 14:17   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от axalex Посмотреть сообщение
В гриде создаем строчки. Подскажите как и как правильно пустить цикл по гриду (дата сорсу) для считывания полей?
Давайте оперделимся с терминалогией. Строчки создаются (и затем хранятся) в таблице посредством элемента управления Grid, который связывается с таблицей через объект DataSource

Для доступа к строкам, хранящимся в таблице можно использовать конструкции select,
while select или объект QueryRun.

Получение строк через DataSource обычно используют, когда есть необходимость при обходе строк таблицы учесть фильтр, который пользователь мог наложить на форме через пользовательский интерфейс. Если в вашем случе это не нужно, то обращайтесь непосредственно к таблице.
За это сообщение автора поблагодарили: axalex (1).
Старый 16.08.2011, 14:29   #7  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Ну значит надо делать приблизительно как я написал, поскольку Вам нужно сказать какой именно ЭКЗЕМПЛЯР таблицы должна использовать форма. То есть в classDeclaration должна быть объявлена ваша таблица: MyTmpTable myTmpTable и сделан метод для передачи ссылки на таблицу:
public MyTmpTable parmTmpTable()
{
return myTmpTable;
}
в инициализацию args добавить: args.caller(this).
в ClassDeclaration у формы добавить класс myCallerClass(который вызывает форму). Его инициализировать в init у формы myCallerClass = element.args().caller(). и добавить в Init datasource MyTmpTable.setTmpData(myCallerClass.getTmpData()). После этого можно просто обращаться к данным таблицы через select.
Старый 16.08.2011, 14:51   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Раз уж последовательность вызовов в примере такова, что форму запускает класс, из которого в дальнейшем и нужно обрабатывать введённые значения, то тогда я бы ещё на этапе подготовки формы связал бы какой-нибудь локальный экземпляр временной таблицы с источником данных создаваемой формы
X++:
formRun.dataSource().cursor().setTmpData(MyTmpTable);

P.S. Только нужно помнить что работа с источниками данных формы возможна только после их инициальзации, те после строки formRun.init();

Последний раз редактировалось S.Kuskov; 16.08.2011 в 14:57.
Старый 16.08.2011, 15:02   #9  
axalex is offline
axalex
Участник
 
91 / 14 (1) ++
Регистрация: 14.03.2011
На датасорсе формы, содержащей временную таблицу с данными создал метод, который возвращает временную таблицу.
X++:
TmpAdditionalAgreementRailTable getTmpData()
{
    return TmpAdditionalAgreementRailTable;
}
В классе, после инициализации, присваиваю Common вернувшийся "dataSet".
X++:
...
    formRun.run();
    formRun.wait();


    if(formRun.closedOk())
    {
        formRunObj = formRun;
        common.setTmpData(formRunObj.getTmpData());

    while select common
    {
    ...
    }
...
Так всё работает! Всем спасибо!
__________________
С уважением, Алексей.

Последний раз редактировалось axalex; 16.08.2011 в 16:56.
Теги
cursor, datasource

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: Filter-by-Grid Blog bot DAX Blogs 2 30.05.2012 13:39
epblog: Persisting Filter conditions in EP Grid Blog bot DAX Blogs 0 29.08.2009 11:05
Advanced programming: Grid data and view manipulations batiskaf_new DAX: Программирование 15 21.06.2006 11:44
Установка Grid на нужную строку при открытии формы korvin DAX: Программирование 20 17.02.2006 14:50
Сохранение настроек GRID (ширина и порядок колонок) liza DAX: Программирование 1 25.07.2003 22:20

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

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

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