Peter Erler Ответов: 2

C# WPF datagrid фильтрует столбец на основе другого столбца


Привет

я новичок в программировании с помощью wpf.
У меня есть большая проблема с, я думаю, нормальным требованием.

У меня есть Datagrid с двумя столбцами "проект" и " задачи"
Каждая задача принадлежит проекту.

Данные для проектов (ObservableCollection):
Проект 1
Проект 2
Проект 3

Данные для задач (ObservableCollection):
Задача 1-Проект 1
Задача 2-Проект 1
Задача 3-Проект 1
Задача 4-Проект 2
Задача 5-Проект 2
Задача 6-Проект 3

Когда я выбираю проект в столбце "проект", я хочу отфильтровать второй столбец" задачи", чтобы отображались только задачи для выбранных проектов.

Я понятия не имею, как мне решить эту проблему.

Что я уже пробовал:

На данный момент я обновляю itemsource для столбца задачи каждый раз, когда меняю столбец проекта.
Когда я добавляю, например, две строки
Строка 1: Проект 1-Задача 1
Строка 2: Проект 2-Задача 4
у меня возникла проблема, что когда я выбираю проект 2 во второй строке, itemsource для столбца Task получает новые данные (только задачи для проекта 2).
Строка 1 больше не показывает task1, потому что ее нет в списке itemsource.

Как я мог решить эту проблему? Может ли кто-нибудь дать мне пример того, как это требование может быть легко решено?

2 Ответов

Рейтинг:
1

Peter Erler

Привет,

извините, что потребовалось некоторое время, прежде чем я смог попробовать это.
Я не могу решить свою проблему с помощью предоставленного решения!

Я думаю, что структура базы данных - это проблема, из-за которой решение не помогает.

Datacontext для моего окна WPF - это таблица " TimeRegistration"
Эта таблица содержит поля "проект", "задача", "TimeFrom"и " TimeTo".

Решение, которое я ищу, - это одно сеточное решение.
Я хочу легко записывать рабочее время для проектов и задач.

Я думал, что это будет легко разработать, но я не запустил его.

Может ли кто-нибудь предоставить небольшой образец проекта, который соответствует моим требованиям?

Привет из Австрии
Питер


Richard Deeming

Если вы хотите ответить на решение, используйте команду "есть вопрос или комментарий?" кнопка под раствором.

Не опубликуйте свой комментарий как "решение".

Peter Erler

Привет,

извините, что потребовалось некоторое время, прежде чем я смог попробовать это.
Я не могу решить свою проблему с помощью предоставленного решения!

Я думаю, что структура базы данных - это проблема, из-за которой решение не помогает.

Datacontext для моего окна WPF - это таблица " TimeRegistration"
Эта таблица содержит поля "проект", "задача", "TimeFrom"и " TimeTo".

Решение, которое я ищу, - это одно сеточное решение.
Я хочу легко записывать рабочее время для проектов и задач.

Я думал, что это будет легко разработать, но я не запустил его.

Может ли кто-нибудь предоставить небольшой образец проекта, который соответствует моим требованиям?

Привет из Австрии
Питер

Рейтинг:
0

CHill60

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

Лучше было бы иметь два выпадающих списка - заполнить 2-й список на основе выбора из первого.

Здесь есть несколько примеров кода c# - заполнение списка WPF на основе выбора другого списка[^]


Peter Erler

Привет,

извините, что потребовалось некоторое время, прежде чем я смог попробовать это.
Я не могу решить свою проблему с помощью предоставленного решения!

Я думаю, что структура базы данных - это проблема, из-за которой решение не помогает.

Datacontext для моего окна WPF - это таблица " TimeRegistration"
Эта таблица содержит поля "проект", "задача", "TimeFrom"и " TimeTo".

Решение, которое я ищу, - это одно сеточное решение.
Я хочу легко записывать рабочее время для проектов и задач.

Я думал, что это будет легко разработать, но я не запустил его.

Может ли кто-нибудь предоставить небольшой образец проекта, который соответствует моим требованиям?

Привет из Австрии
Питер

CHill60

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