Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
2 / 2 / 6
Регистрация: 04.05.2012
Сообщений: 62

Фильтрация элементов TreeView в зависимости от их BackColor

08.06.2012, 12:39. Показов 2840. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть элемент TreeView Отделы->Сотрудники, при формировании дерева меняю свойство BackColor у некоторых сотрудников. Необходимо по нажатию на кнопку ("Фильтр") оставить в дереве только тех сотрудников, которые имеют определенный BackColor. При повторном же нажатии все сотрудники должны обратно появиться.

Решение данной задачи вижу в цикле по всему дереву и удалении из него ненужных элементов, а после повторного нажатия на кнопку заново формировать дерево. Возможно ли как-то по другому решить задачу?

Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2012, 12:39
Ответы с готовыми решениями:

WPF фильтрация элементов в ListBox в зависимости от выбранного элемента в TreeView
Добрый день! Имеется проект, на главном окне которого расположены TreeView и ListBox. ListBox привязан к ObservableCollection во...

Как можно BackColor в TreeView изменить?
Как можно BackColor в TreeView изменить? А то свойства такого там нет, но надо.

Фильтрация элементов, в зависимости от того что введёт пользователь
Есть инпут текст ,который используется для сортировки ников.То есть при вводе символов в инпут из стобца с никами должны вылетать ники...

6
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
08.06.2012, 12:44
Если предполагается, что на фильтр будут много и часто нажимать (в чем я сомневаюсь), то можно при формировании дерева, добавлять узлы TreeView, с измененным BackColor, в свою коллекцию.
И тогда не нужно будет искать их каждый раз при нажатии.
1
2 / 2 / 6
Регистрация: 04.05.2012
Сообщений: 62
08.06.2012, 15:34  [ТС]
turbanoff если я вас правильно понял, то сделал следующее. Создал переменную типа TreeView и во время формирования основного TreeView добавляю ветки (Nodes) и к новому TreeView удовлетворяющие условию. В итоге, на сколько я понимаю, получается еще одно дерево с нужными мне значениями, но как его присвоить имеющемуся на форме элементу TreeView не могу догадаться.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
08.06.2012, 21:47
узел TreeView имеет тип TreeNode. Узлы можно хранить не только в другом TreeView, но и в коллекциях. Например в List<TreeNode> или в массиве.
0
2 / 2 / 6
Регистрация: 04.05.2012
Сообщений: 62
13.06.2012, 09:07  [ТС]
Что-то не могу реализовать никак((. Понял что надо параллельно занесению отделов, сотрудников, дат нужно формировать List<TreeNode>. А потом при желании по нажатию на кнопку подключать к TreeView List<TreeNode>. Вопрос наверное глупый, но может подскажите как правильно добавить сюда List<TreeNode> и подключить к TreeView
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
TreeNode node = new TreeNode();
            for (int i = 0; i < otdel.Count; i++)
            {
                node= tv_sotrudniki.Nodes.Add(otdel[i].ToString());        //заношу отделы
                node.Name = otdel[i].ToString();
 
                ArrayList sotrudnik = bd.SotrTV(otdel[i].ToString());
 
                for (int j = 0; j < sotrudnik.Count; j = j + 2)                     
                {
                    nodes = node.Nodes.Add(sotrudnik[j].ToString());       //заношу сотрудников в отдел
                    nodes.Name = sotrudnik[j + 1].ToString();
 
 
                        ArrayList data = bd.DataZay(sotrudnik[j + 1].ToString());
                        for (int d = 0; d < data.Count; d++)
                        {
                            nodess = nodes.Nodes.Add(data[d].ToString());       //заношу даты сотруднику
                            nodess.Name = data[d].ToString();
 
                            //подсветка дерева в зависимости от статуса
                            ArrayList dorabotka = bd.obrabotano(data[d].ToString(), sotrudnik[j + 1].ToString());
                            if (dorabotka[1].ToString() == "True")
                                nodess.BackColor = Color.Gold;
                            else
                            {
                                if (dorabotka[0].ToString() == "False")
                                    nodess.BackColor = Color.Red;
                                nodessf = nodesf.Nodes.Add(data[d].ToString());
                                nodessf.Name = data[d].ToString();
                            }
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
13.06.2012, 13:19
А где условие, для узлов с сотрудниками? Или нужно всех, у которых хотя бы одна из дат с BackColor = Color.Gold?

PS. не называйте переменные так: node, nodess, nodessf. Вы сами в них еще не запутались?
0
2 / 2 / 6
Регистрация: 04.05.2012
Сообщений: 62
13.06.2012, 17:52  [ТС]
Извиняюсь за немного неверный код- последние 2 строчки с переменными nodessf не должно быть. А фильтр хочу осуществить следующий. После нажатия на фильтр должны остаться только те даты у которых BackColor красный. Тоже самое планирую сделать с золотым, но это по аналогии.

Еще подумал над тем что если у сотрудника нет даты с красным BackColor то его не должно быть в отфильтрованном дереве.

PS. Переменные nodes, nodess называю наоборот для того чтобы понимать что работаю с элементом nodes.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2012, 17:52
Помогаю со студенческими работами здесь

BackColor записи в DataGrid в зависимости от значения поля
Как менять цвет фона записи в DataGrid в зависимости от значения определенного поля

TreeView фильтрация
Добрый день. Имею задачу: отобразить csv файл в двух TreeView c фильтрацией csv файл имеет следующую струтуру: имя_файла,...

Фильтрация данных в зависимости от выбора в ComboBox
Помогите организовать поиск(фильтрацию)во второй вкладке Combobox результат вывести в таблицу(таблицу я просто скопипастил из первой...

Фильтрация в combobox в зависимости от выбора значения
Добрый вечер. Во вложении файл. Необходима помощь в решении следующей проблемы: Существует лист &quot;приход&quot; поступление...

Фильтрация в форме в зависимости от выбранной вкладки
Люди, помогите, пожалуйста, мне нужен в форме всунуть элемент НАБОР ВКЛАДОК и написать процедуры обработки событий, осуществляющую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru