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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.11.2012, 19:04   #1  
alicedr is offline
alicedr
Участник
 
175 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
Сортировка после изменения номера строки
Задача элементарная: добавить на форму "Заказы на перемещение" (InventTransferOrders) 2 кнопочки: Вверх и Вниз, которые будут перемещать строку заказа вверх или вниз на одну строку. Тут как-бы без проблем, новый LineNum генерится правильно. Но тут возникла неувязочка: строчка должна ПЕРЕДВИГАТЬСЯ (перескакивать) вверх или вниз, в зависимости от нового номера строки.
Были добавлены методы на форму в источник данных InventTransferLine в поле LineNum:
PHP код:
public void modified()
{
    
super();
    
inventTransferLine_ds.reread();
    
inventTransferLine_ds.refresh();

или на кнопки "Вверх" и "Вниз"
PHP код:
void clicked()
{
    
super();
    
inventTransferLine_ds.refresh();

Результата это никакого не дало, мало того, что строки не отсортировываюся как надо, так еще и новый номер строки не высвечивается (в добавленном в строки пользовательском поле)-сразу после изменения мелькнет новое значение, и снова отображается старое. Однако, если перезайти в строки, то видно новое значение и правильная сортировка.
Решение где-то рядом, а я ...
Старый 10.11.2012, 19:32   #2  
Филимон is offline
Филимон
Участник
 
4 / 10 (1) +
Регистрация: 10.11.2012
можно попробовать сделать так: запомнить recid передвигаемой записи, затем выпольнить executequery для датасорса, затем найти запись по запомненному recid и позиционировать курсор на ней (аксапты под рукой нет, так что в точности код сейчас вам не напишу)
Старый 10.11.2012, 19:45   #3  
Филимон is offline
Филимон
Участник
 
4 / 10 (1) +
Регистрация: 10.11.2012
еще как вариант - посмотреть аналогичные места в аксапте. такие точно есть, но там вроде элементы в дереве двигаются (например объекты в программном проекте, или поля при пользовательской настройке формы), про грид навскидку не вспомню примеры. Тогда можно сделать так: сделать отдельную кнопку для перехода в режим передвигания строк, в этот момент открывать отдельное окно где строчки перемещения будут выстроены в дерево, там юзер будет двигать строчки как его душе угодно, а когда закончит - по закрытии этого окна один раз перерисовать строчки перемещения, чтобы они выстроились все в окончательном порядке

вообще, на кажду задачку можно придумать несколько вариантов решения - особенно, если четко представлять зачем точно это всё нужно, и как с этим хочет работать юзер
Старый 10.11.2012, 22:02   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от alicedr Посмотреть сообщение
строчка должна ПЕРЕДВИГАТЬСЯ (перескакивать) вверх или вниз, в зависимости от нового номера строки.
Для этого необходимо сказать датасорсу, чтобы он заново перевыбрал все строки согласно текущего запроса.
X++:
inventTransferLine_ds.research
Старый 11.11.2012, 00:29   #5  
alicedr is offline
alicedr
Участник
 
175 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
Как показала практика, метод на форме в источнике данных InventTransferLine в поле LineNum отрабатывает только при изменении поля вручную.
А вот такой метод на кнопке помог:
X++:
void clicked()
{
    InventTransferId   origId;
    LineNum            origLineNum;
    ;
    origId=InventTransferLine.TransferId;
    origLineNum=InventTransferLine.LineNum;
    super();

    origLineNum=(select firstonly  maxof(LineNum)
                 from inventTransferLine
                 where inventTransferLine.TransferId==OrigId &&
                      inventTransferLine.LineNum<OrigLineNum).LineNum;
    inventTransferLine_ds.research();
    
    inventtransferline_ds.findRecord(InventTransferLine::find(origId, origLineNum));
}
Спасибо всем!
Теги
linenum, номер строки, обновление, сортировка, строки, спецификация

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Массовое создание СФ. Почему берет номера из списка удаленных СФ? mazzy DAX: Функционал 6 21.03.2011 22:35
Отображение номера Документа ГК gaenar DAX: Программирование 0 11.05.2005 12:00
Сводное планирование - изменения&изменения мин. Alexm DAX: Прочие вопросы 1 05.04.2005 10:43
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Функция "Удалить строки" Oks DAX: Функционал 1 03.07.2002 18:09

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

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

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