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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2006, 20:32   #1  
Eland is offline
Eland
Участник
 
31 / 12 (1) ++
Регистрация: 10.07.2006
Адрес: Москва
Как пометить на grid_е несколько строк ?
Приветствую =)

Ребят, подскажите, как решить такую вот задачку:

Дано:
Грид с датасорсом.
multiselect = true

Задача:
Программно выделить несколько строк
(аналог: то же самое, как если бы зажав кнопку ctrl выбрали несколько строк)
Старый 04.10.2006, 21:21   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
На примере закупок: (выделяем первые две строки в гриде)
X++:
    PurchTable_ds.first();
    PurchTable_ds.mark(true);
    PurchTable_ds.next();
    PurchTable_ds.mark(true);
Еще посмотрите метод markRecord() - но у меня он отказался сразу работать, поэтому я дальше не экспериментировал.
За это сообщение автора поблагодарили: Eland (1).
Старый 04.10.2006, 22:54   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Еще посмотрите метод markRecord() - но у меня он отказался сразу работать, поэтому я дальше не экспериментировал.
Да? А у меня проходил такой финт ушами
X++:
    InventTable it;
    LedgerTable lt;
    ;
    while select it where it.ItemId like "01*"
    {
        lt.RecId = it.recid;
        InventTable_ds.markRecord(lt, 1);
    }
Т.е. ищет строго по RecId и не смотрит на tableId.

При этом надо учитывать, что если записи нет в кэше, то будет происходить фетч с сервера, пока не будет получена нужная или не будут загружены все данные
__________________
Axapta v.3.0 sp5 kr2
Старый 05.10.2006, 08:21   #4  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от AndyD Посмотреть сообщение
Да? А у меня проходил такой финт ушами
X++:
    InventTable it;
    LedgerTable lt;
    ;
    while select it where it.ItemId like "01*"
    {
        lt.RecId = it.recid;
        InventTable_ds.markRecord(lt, 1);
    }
Т.е. ищет строго по RecId и не смотрит на tableId.

При этом надо учитывать, что если записи нет в кэше, то будет происходить фетч с сервера, пока не будет получена нужная или не будут загружены все данные
Опа а для особо одаренных объясни, в чем прикол строки:
lt.RecId = it.recid;
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 04.10.2006, 23:01   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Хмм. странно.
я взял две строки закупки: (они были в гриде)
X++:
PurchTable_ds.markRecord(PurchTable::find('zp0000019'), true);
PurchTable_ds.markRecord(PurchTable::find('zp0000017'), true);
Никак он не отреагировал, хотя RecId у этих строк, понятное дело, заполнен.

ЗЫ Только что специально попробовал еще раз - понял в чем дело - они то помечаются как отмеченные, только на гриде это не отображается.
(refresh надо делать - причем всех выделенных строк) Первым способом не нужно.

Наткнулся в процессе на еще одну "фичу": Если зажать ctrl, выделить строку, а потом выделить ее же (кликнуть на другом поле этой же строки грида), то система воспринимает это, как то, что выделено 2 строки, и большая часть кнопок (на закупке, в частности) становится недоступной.

Последний раз редактировалось kashperuk; 04.10.2006 в 23:29.
Старый 05.10.2006, 08:49   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Это просто иллюстрация, что markRecord() смотрит только на RecId табличной переменной. Точно так же можно было использовать Common или любую другую таблицу

PS. Кстати, если подсунуть неициализированную табличную переменную, то получим фетч всех записей выборки из б/д
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 05.10.2006 в 08:53.
Старый 05.10.2006, 10:18   #7  
Eland is offline
Eland
Участник
 
31 / 12 (1) ++
Регистрация: 10.07.2006
Адрес: Москва
Отлично !

Спасибо, парни.

А кто знает, чем отличается

Код:
InventTable_ds.markRecord(lt, 1);
от

Код:
InventTable_ds.markRecord(lt, 2);
А если быть конкретнее: что означает параметр "_mark" ?
Старый 05.10.2006, 10:21   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
там 1 или 0 (пометить или нет)
То есть 2 от 1 ничем, по сути, не отличается, потому что как "пометить" воспринимается и 2 и 1. (главное чтоб не 0)

И благоданость здесь выказывают немного иначе. (см. Одобрить сообщение)

Последний раз редактировалось kashperuk; 05.10.2006 в 10:35.
Старый 05.10.2006, 11:19   #9  
Eland is offline
Eland
Участник
 
31 / 12 (1) ++
Регистрация: 10.07.2006
Адрес: Москва
Ок. =)

Есть ещё один вопрос.

Есть ли способ сбросить ВСЕ выделения с датасорса не перебирая каждую запись ?
Старый 05.10.2006, 11:27   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Попробуйте PurchTable_ds.research();
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Выделить несколько диапазонов одновременно (в Excel) MironovI DAX: Программирование 31 23.12.2016 15:12
Количество строк в Query Владимир Максимов DAX: Программирование 19 11.08.2014 18:27
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Тормозит копирование строк в буфер обмена ivas DAX: Программирование 20 21.08.2007 15:05
Очень маленькая высота строк в таблице формы (1-2 мм) Gustav DAX: Программирование 11 17.06.2006 11:57

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

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

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