05.03.2007, 19:55 | #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(); |
|
05.03.2007, 20:03 | #2 |
Участник
|
Нет. На то он и линк, а не фильтр.
Если вы хотите иметь возможность сброса фильтра, то нужно этот линк реализовать как раз через фильтры. И накладывать его при смене строки в родительском источнике. (перекрыть у него метод active) Кнопка сброса фильтра, думаю, не блокируется, а просто не активна. потому что фильтра не установлено Или не сбрасывается фильтр по ProductGroupId? |
|
05.03.2007, 20:07 | #3 |
Участник
|
да в том то и дело.. что фильтр устанавливается.. его можно посмотреть ))) мало того он сохраняется... и при новом открытии формы установлен.. и правильно снимается... при нажатии кнопки фильтр... а вот снять не удается...
|
|
05.03.2007, 20:14 | #4 |
Участник
|
А, да. Все верно.
Фильтр вы наложили из кода. И на Query источника. Кнопка убирания фильтрации появляется только при наличии пользовательских фильтров. Которых у вас нет. Соответственно, она не активна. А вот что делать, если это требуется, подумаем |
|
|
За это сообщение автора поблагодарили: samolalex (1). |
29.09.2010, 10:56 | #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 |
|