12.05.2009, 10:40 | #1 |
Участник
|
Фильтр на форме без datasource
Здравствуйте. Столкнулся с проблемой. Есть форма с ListView. Форма на подобие той, что у оборотно-сальдовой ведомости. Но на этой форме нет datasource. И нет стандартного фильтра. Но пользователь хочет обязательно фильтровать значения. Что-то не как не могу сообразить как сделать лучше. Раньше не когда не работал с ListView всегда обходился простыми средставами. Заранее благодарен за помощь.
|
|
12.05.2009, 11:21 | #2 |
Боец
|
если ListView - то только пересоздавать каждый раз при изменении фильтра (обычный контрол на форме). Стандартный фильтр работает ТОЛЬКО с датасорсом ПРИНЦИПИАЛЬНО.
|
|
12.05.2009, 14:45 | #3 |
Moderator
|
Да, к сожалению, у FormListItem не наблюдается свойства типа visible, которое бы здесь пригодилось для решения задачки относительно малой кровью...
В общем, надо психоаналитически работать с пользователем. Может, ему сгрузить содержимое ListView в Excel и пусть там уфильтруется? |
|
12.05.2009, 20:58 | #4 |
Участник
|
Да наверное выгрузка в Excel. Это самый оптимальный вариант решения задачи. Спасибо за помощь.
|
|
13.05.2009, 12:29 | #5 |
Moderator
|
Помечтаем на уровне идеи... а, впрочем, вполне реализуемо...
Возможно пользователь хотел бы не только фильтровать строки ListView, но и выполнять операции, разрешенные на элементах списка. Например, если двойной щелчок на сумме в форме "Анализ счета" отображает перечень проводок, из которых эта сумма складывается (drill-down), то, фильтруя строки в Excel, пользователь, наверняка, захочет похожего поведения и при щелчке на ячейке таблицы.
В Excel подобное поведение при управлении из Аксапты обеспечить сложно, но можно внедрить на форму "маленький Excel" - ActiveX OWC.Spreadsheet и настроить обработку его событий по аналогии с реакцией ListView, обеспечив пересчет текущей строки Spreadsheet в индекс (и колонку) соответствующего item'а. Spreadsheet можно посадить в диалог, вызываемый по кнопке рядом с ListView. |
|
13.05.2009, 13:01 | #6 |
Участник
|
Цитата:
У ListView нет не только фильтрации. У него нет сортировки. У него нет автоотчета. Все данные ListView полностью "живут" на клиентском компьютере. У него масса недостатков. Предлагаемый вариант с Excel мне кажется еще более пугающим своей бредовостью. Мне кажется, что если уж так хочется, то просто заполните временную таблицу и сделайте нормальный грид по нормальной временной таблице. |
|
13.05.2009, 14:25 | #7 |
Боец
|
Цитата:
Мне кажется, что если уж так хочется, то просто заполните временную таблицу и сделайте нормальный грид по нормальной временной таблице.
В этом случае, появится возможность любой фильтрации по любым полям, и автоотчет будет работать и т.п. Ну... и сортировку можно привинтить. Но вообще, согласен с mazzy, что listView это тяжелый и трудный контрол. Лучше обычный грид, там программинга почти не нужно |
|
13.05.2009, 18:15 | #8 |
Moderator
|
Ребята, всё хорошо, всё не вызывает сомнения в правильности как таковой - особенно для новых, еще не решенных, задач. Только не забывайте, что разработчику может ставиться задача не ПЕРЕписать, а ДОписать, деликатно сохранив нетронутым уже написанное, пусть и не очень удачное.
Типа ты строитель железной дороги. Вот до этой станции уже построено, а дальше твои рельсы. А то, что мы (чудаки?) почему-то положили на своей построенной части узкоколейку, а не нормальной ширины путь - не обсуждается. Возможные варианты: * продолжай тоже узкоколейкой; * продолжай (якобы, на твой взгляд, правильной) широкой колеей, а на этой станции делай сопряжение и каждый раз переставляй колеса у поезда; * переделай уже построенное на широкий путь и продолжай таким же. Вероятно, право на жизнь имеют все три варианта, а выбор конкретного зависит от ряда дополнительных факторов. Если, например, уже построен всего 1 километр, а предстоит еще аж 1000, то, наверное, всего 1 километр можно и переделать. Об обратной ситуации не берусь сказать с уверенностью |
|
13.05.2009, 18:58 | #9 |
Боец
|
|
|