|
|
#1 |
|
Участник
|
Фильтры
Проблема вот в чем...
Создаю некий фильтр, динамически прилинковывая к таблице таблицу по которой фильтрую записи код примерно такой: Код: 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(); |
|
|
|
|
#2 |
|
Участник
|
Нет. На то он и линк, а не фильтр.
Если вы хотите иметь возможность сброса фильтра, то нужно этот линк реализовать как раз через фильтры. И накладывать его при смене строки в родительском источнике. (перекрыть у него метод active) Кнопка сброса фильтра, думаю, не блокируется, а просто не активна. потому что фильтра не установлено ![]() Или не сбрасывается фильтр по ProductGroupId? |
|
|
|
|
#3 |
|
Участник
|
да в том то и дело.. что фильтр устанавливается.. его можно посмотреть ))) мало того он сохраняется... и при новом открытии формы установлен.. и правильно снимается... при нажатии кнопки фильтр... а вот снять не удается...
|
|
|
|
|
#4 |
|
Участник
|
А, да. Все верно.
Фильтр вы наложили из кода. И на Query источника. Кнопка убирания фильтрации появляется только при наличии пользовательских фильтров. Которых у вас нет. Соответственно, она не активна. А вот что делать, если это требуется, подумаем
|
|
|
|
| За это сообщение автора поблагодарили: samolalex (1). | |
|
|
#5 |
|
Участник
|
Цитата:
Несмотря на то, что данная тема была добавлена достаточно давно, пришлось потратить несколько часов на корректное решение задачки с удалением фильтров, установленных программно, стандартной кнопкой панели инструментов. Надеюсь, данное решение окажется кому-то полезным. Очень пригодился материал: 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 | 20 | |||
| Поле для ввода критерия фильтрации | 16 | |||
| Сортировка и/или фильтры в lookup форме - howto. | 5 | |||
| Сбрасываются фильтры | 7 | |||
| Про фильтры | 7 | |||
|