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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2007, 19:55   #1  
Asking questions is offline
Asking questions
Участник
 
16 / 10 (1) +
Регистрация: 12.09.2006
Фильтры
Проблема вот в чем...
Создаю некий фильтр, динамически прилинковывая к таблице таблицу по которой фильтрую записи

код примерно такой:

Код:
    Query query   = new Query();
    QueryBuildDataSource    qbds,qbdsInventTable;
    InventProductGroupId    productGroupId;
    QueryBuildRange         sss;
    ;
    
    query.addDataSource(tablenum(InventTable));
    qbdsInventTable=query.dataSourceTable(tablenum(InventTable));
    qbds=qbdsInventTable.addDataSource(tablenum(InventProductGroupItem));
    qbds.addLink(fieldnum(InventTable,ItemId),fieldnum(InventProductGroupItem,ItemId));
    //
    sss = qbds.addRange(fieldnum(InventProductGroupItem,ProductGroupId));
    sss.value(productGroupId);
    sss.status(rangeStatus::Open);
    
    qbds.joinMode(JoinMode::InnerJoin);
    InventTable_ds.query(query);
    InventTable_ds.executeQuery();
при этом фильтр устанавливется... но блокируется кнопка сброса фильтра. Можно ли это преодолеть?
Старый 05.03.2007, 20:03   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нет. На то он и линк, а не фильтр.
Если вы хотите иметь возможность сброса фильтра, то нужно этот линк реализовать как раз через фильтры. И накладывать его при смене строки в родительском источнике. (перекрыть у него метод active)

Кнопка сброса фильтра, думаю, не блокируется, а просто не активна. потому что фильтра не установлено

Или не сбрасывается фильтр по ProductGroupId?
Старый 05.03.2007, 20:07   #3  
Asking questions is offline
Asking questions
Участник
 
16 / 10 (1) +
Регистрация: 12.09.2006
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Нет. Кнопка сброса фильтра, думаю, не блокируется, а просто не активна. потому что фильтра не установлено

Или не сбрасывается фильтр по ProductGroupId?
да в том то и дело.. что фильтр устанавливается.. его можно посмотреть ))) мало того он сохраняется... и при новом открытии формы установлен.. и правильно снимается... при нажатии кнопки фильтр... а вот снять не удается...
Старый 05.03.2007, 20:14   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А, да. Все верно.
Фильтр вы наложили из кода. И на Query источника.

Кнопка убирания фильтрации появляется только при наличии пользовательских фильтров. Которых у вас нет. Соответственно, она не активна.

А вот что делать, если это требуется, подумаем
За это сообщение автора поблагодарили: samolalex (1).
Старый 29.09.2010, 10:56   #5  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Post
Цитата:
Сообщение от kashperuk Посмотреть сообщение
А, да. Все верно.
Фильтр вы наложили из кода. И на Query источника.

Кнопка убирания фильтрации появляется только при наличии пользовательских фильтров. Которых у вас нет. Соответственно, она не активна.

А вот что делать, если это требуется, подумаем

Несмотря на то, что данная тема была добавлена достаточно давно, пришлось потратить несколько часов на корректное решение задачки с удалением фильтров, установленных программно, стандартной кнопкой панели инструментов. Надеюсь, данное решение окажется кому-то полезным.
Очень пригодился материал: http://kashperuk.blogspot.com/2010/0...-research.html. Особенно раздел formDataSource.queryRun().query() vs formDataSource.query() данной статьи.

Таким образом, данная задача решается добавлением следующих строк кода в методы executeQuery() датасоурса формы и метод run() самой формы:
X++:
public void executeQuery()
{
if(this.queryRun())
{
super();
}
else
{
super();
this.queryRun().query().dataSourceTable(tableNum(MyTable)).clearRanges();
this.queryRun().query().dataSourceTable(tableNum(MyTable)).addRange(fieldNum(MyTable, MyField)).value(RangeValue);
}
}
X++:
public void run()
{
super();
MyTable_ds.research();
}
В результате при запуске формы будут установлены программные фильтры, которые в случае необходимости могут быть удалены кнопкой "Удалить фильтры", расположенной на панели инструментов.
__________________
С уважением, Александр.

Последний раз редактировалось samolalex; 29.09.2010 в 11:06.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
фильтры, которые не видны через Grid chanchala DAX: Программирование 20 07.10.2008 12:30
Поле для ввода критерия фильтрации Андрей К. DAX: Программирование 16 09.08.2007 10:11
Сортировка и/или фильтры в lookup форме - howto. Maximin DAX: Программирование 5 07.06.2005 11:06
Сбрасываются фильтры gudzon DAX: Программирование 7 25.01.2005 12:52
Про фильтры AlexP DAX: Программирование 7 02.12.2004 16:35

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

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

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