Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 30.08.2019
Сообщений: 58

Combobox to Combobox binding according to Foreign Key

09.09.2019, 21:20. Показов 6291. Ответов 36

Студворк — интернет-сервис помощи студентам
Всем привет!
Во-первых хочу сказать всем, что это самый лучший (судя по собственному опыту) форум для проггеров.
Так как прошлую тему создал на множестве форумов и нигде не ответили - а здесь ответили очень быстро, и при чем несколько человек. Спасибо!!!

Короче, есть две таблы EF связанные через Foreign Key (создавал через ICollection), связь один ко многим;
В первый combobox нужно вывести данные из первой таблицы, а во второй combobox из второй, но по связи!!
Т.е. к примеру. Первая таблица - лесхозы, лесхозы состоят из множества лесничеств.
И когда в первом combobox выбран Могилевский лесхоз - во втором должны отобразиться только те, лесничества, которые, относятся конкретно к нему и больше ни к какому другом лесхозу.
При изменении выбора лесхоза на Брестский, допустим, во втором combobox - тоже должны отобразиться, разумеется, только те, лесничества, которые относятся к Брестскому лесхозу.
Как что где копать? Заранее огромное спасибо!!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.09.2019, 21:20
Ответы с готовыми решениями:

Исключение из ComboBox'а значений выбранных в других ComboBox'ов используя Binding
Возможно ли средствами Binding-a решить такую задачку: есть 5 TextBox - ов, и 3 ComboBox - а. значения всех TextBox - ов заносятся в...

Binding к Combobox
Всем привет. Сижу не понимаю как привязывать к Combobox-у. У меня есть таблица(Entity Framework) с языками, в которую я могу добавлять...

Binding ComboBox
Как сделать с помощью биндинга установку элемента комбобокса по умолчанию? Есть идея такая создать свой комбобокс и сделать в нем 2...

36
0 / 0 / 0
Регистрация: 30.08.2019
Сообщений: 58
11.09.2019, 08:23  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
У меня же нет вашей базы.
прикрепляю базу
файлы mydb.backup - бекап базы;
также файл mydb.sql - это этот же бекап но в sql формате,
все остальные sql файлы - это бекапы отдельных таблиц

Огромное спасибо за развернутые ответы, постараюсь всё переварить и передалать ТАК КАК НАДО!
Вложения
Тип файла: rar PostgreSQL.rar (20.3 Кб, 1 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
11.09.2019, 08:25
trimagick77, и мне не нравится ваша Модель - класс SmenovodstvoContext.
По идее она должна инкапсулировать всю работу по хранению данных.
Для ViewModel не должно быть разницы где данные хранятся в БД или XML, или ещё где.
Вы же возвращаете данные в типе DbSet характерным для БД. А зачем эта информация пользователям Модели?

Я не эксперт в этой области, но в меру моего понимания, я бы возвращал данные в каком-то более простом-универсальном типе.
Допустим, в List<T>и добавил в Модель методы для изменения данных, их сохранения, события извещающие об изменении данных.
У вас как планируется работа с приложением -одновременно один пользователь или много?
Если много, то надо как-то проверять актуальность скачанных данных, так как после закачки их может изменить другой пользователь.
А если это однопользовательское приложение, я бы выбрал более простую БД которую можно переносить с самим приложением.

Какое редактирование данных предусматривается у вас в приложении? Если может изменяться информация в типах для данных (BookSeedInside, BookSeedOutside, StructPartUrFaceLH и т.д.), то эти типы не подходят для редактирования в View. Такие типы должны реализовывать INPC. Придётся делать раздельные типы для Модели и View. И в типы Модели, так как они отражают хранимые данные, желательно добавить Id - уникальный идентификатор. Иначе на каком-то этапе можете получить неразбериху.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
11.09.2019, 08:28
Цитата Сообщение от trimagick77 Посмотреть сообщение
прикрепляю базу
файлы mydb.backup - бекап базы;
также файл mydb.sql - это этот же бекап но в sql формате,
все остальные sql файлы - это бекапы отдельных таблиц
Я с БД почти не работал. Ещё толком не освоил их.
Распишите как из ваших бекапов создать актуальную БД.
У меня установлен только MS SQL.
Наверное, надо установить другую?
0
0 / 0 / 0
Регистрация: 30.08.2019
Сообщений: 58
11.09.2019, 09:06  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
У меня установлен только MS SQL.
Наверное, надо установить другую
Цитата Сообщение от Элд Хасп Посмотреть сообщение
я бы выбрал более простую БД которую можно переносить с самим приложением
MS Access - не подходит, нужна SQL база данных; выбор пал на PostgreSQL - так как она бесплатная;
и как я писал выше поэтому был выбран Net Core а не FW.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
У вас как планируется работа с приложением -одновременно один пользователь или много?
Одновремено много, но у каждого отдельного подразделения будет своя БД, а не одна общая.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Какое редактирование данных предусматривается у вас в приложении?
Информация в типах изменяться не будет. Это только самое раннее приблизительное приближиние БД;
итоговая БД должна быть нормализована по первым трем формам. Поэтому то, что создано сейчас - будет переделано вообще ВСЁ. Я тоже не эксперт в этой области, поэтому еще сам не понимаю как там данные будут двигаться, и этим как раз сейчас и занимаюсь с инженерами по лесному хозяйству. Так-то еще даже тех. задания нет
Так-то конечные пользователи должны уметь, добавлять, удалять, редактировать записи, но в рамках БД своего подразделения.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
желательно добавить Id - уникальный идентификатор
это вроде как бы и пытался сделать - все классы в контексте унаследованы от абстрактного класса BaseEntity - у которого есть метод
C#
1
public int Id { get; set; }
пошел читать дальше про INPC - отличный туториал на сайте, также и другие материалы по MVVM с сайта.
Очень много информации - еще раз ОГРОМНОЕ СПАСИБО, за помощь, и развернутые комментарии.
Когда переделаю во что-то стоящее, опишусь
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
11.09.2019, 10:04
Цитата Сообщение от trimagick77 Посмотреть сообщение
MS Access - не подходит, нужна SQL база данных; выбор пал на PostgreSQL - так как она бесплатная;
и как я писал выше поэтому был выбран Net Core а не FW.
Ок!
Как я понимаю у вас пока тестовое приложение. Фактическая его цель - формирование нормального техзадания.
В реальном использовании, бесплатность, БД вас беспокоить не должна, так как априори такое приложение коммерческое и в его стоимость входит в том числе и стоимость БД.

Для тестовых прогонов можно использовать:
SQlite - позволяет всю логику работы с БД держать в приложении. Бесплатная, локальная, однопользовательская.
MS SQL Server Express - бесплатная до 10гб, с возможностью платного расширения.
MySQL - бесплатная, открытая.

Если вы собираетесь использовать своё приложение только на Win десктопах, то не советую Core. Там много, что труднее делать чем на FW. Смысл Core - это только мультиплатформенность.

За консультациями по выбору БД советовал бы обратиться сюда https://www.cyberforum.ru/ado-net/
Создайте новую тему с вопросом.

В принципе и в нашем разделе можете создать такую тему с изложением проблемы и вопросами чтобы посоветовали в связке WPF + SQL БД, что лучше использовать в такой связке FW vs Core и т.д.?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
11.09.2019, 10:16
Да, кстати!
Насколько я понимаю, если у вас Модель находится в отдельном проекте и в ней инкапсулирована вся логика работы с БД, то это позволяет не завязываться на Core в проекте с View.
Так пока я не делал, но по идее не должно быть ни каких проблем.

Надо попробовать.
0
0 / 0 / 0
Регистрация: 30.08.2019
Сообщений: 58
16.09.2019, 17:26  [ТС]
Ещё раз огромное спасибо, за неоценимую помощь и подробные комментарии
Основной функционал темы работает без проблем!
Но вот с остальным...
Долго читал форум... качал исходники...отсюда, с codeproject, но всё ровно вопросов очень много...
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вы же возвращаете данные в типе DbSet характерным для БД. А зачем эта информация пользователям Модели?
Долго искал по преобразованиям DBSET в List<T> - но так и не смог заставить заработать...
самое правдоподобное, что нашел это когда во вьюмодели (даже не в контексте пишут) так
C#
1
2
db.TVidels.ToList().ForEach(item => db.TVidels.Local.Add(item));
            Collection = db.TVidels.Local;
а потом в XAML в описании datagrid меняем-
XML
1
ItemsSource="{Binding Collection}"
и в каждом описании поля таблицы добавляем Path=
...но так не работает...
проект прикрепляю...
Цитата Сообщение от Элд Хасп Посмотреть сообщение
добавил в Модель методы для изменения данных, их сохранения
это всё вроде работает - через datagrid во вью меняю, добавляю, удаляю записи след. образом:
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
        private void updateButton_Click(object sender, RoutedEventArgs e)
        {
            db.SaveChanges();
        }
        private void deleteButton_Click(object sender, RoutedEventArgs e)
        {
            if (VedomLSPGrid1.SelectedItems.Count > 0)
            {
                for (int i = 0; i < VedomLSPGrid1.SelectedItems.Count; i++)
                {
                    TaxVidel tvLSP1 = VedomLSPGrid1.SelectedItems[i] as TaxVidel;
                    if (tvLSP1 != null)
                    {
                        db.TVidels.Remove(tvLSP1);
                    }
                }
            }
 
            db.SaveChanges();
        }
 
        private void insertButton_Click(object sender, RoutedEventArgs e)
        {
            TaxVidel tvLSP1 = VedomLSPGrid1.SelectedItems as TaxVidel;
            if (tvLSP1 != null)
            {
                db.TVidels.Add(tvLSP1);
            }
 
            db.SaveChanges();
        }
правда это работало, когда было в cs файле одноименным с XAML-файлом.
сейчас перенес эти методы во вью модель...еще не проверял...
Что дальше, помогите, поделитесь плизз ссылками или готовыми исодниками как преобразовать DBSET в List<T>...
Вложения
Тип файла: rar MyProj.new.rar (3.99 Мб, 0 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
16.09.2019, 17:41
Цитата Сообщение от trimagick77 Посмотреть сообщение
Долго искал по преобразованиям DBSET в List<T> - но так и не смог заставить заработать...
самое правдоподобное, что нашел это когда во вьюмодели (даже не в контексте пишут) так
Такое преобразование - норм.
Только делать его надо в Model, а не в VM.

Цитата Сообщение от trimagick77 Посмотреть сообщение
Что дальше,
По мере возможности.
0
0 / 0 / 0
Регистрация: 30.08.2019
Сообщений: 58
17.09.2019, 12:02  [ТС]
То что залил вчера - неправильно, 100%, теперь понял, переделал как мог сейчас - но все ровно не работает...

Делал так:
1) подключаем библиотеку
C#
1
using System.Collections.Generic;
2) объявляем лист со списком таксац. выделов
C#
1
public List<TaxVidel> listTV { get; } = new List<TaxVidel>();
3) во вьюмодели, в загрузке данных пишем
C#
1
2
           listTV.Clear();
           db.TVidels.ToList().ForEach(item => listTV.Add(item));
4) в XAML меняем привязку datagrid на listTV
Вроде всё должно работать, перекопал ещё раз все форумы - но НЕ РАБОТАЕТ...

проект прикрепляю

P.S. С таким объявлением контекста во вьюмодели, почему-то не выподают методы для db. как раньше...
C#
1
  private readonly SmenovodstvoContext db = new SmenovodstvoContext();
Раньше было объявлено вот так в cs-файле одноименным с XAML
C#
1
db = new SmenovodstvoContext();
И тогда при написании db.Tvidels. - выпадал список, смотри картинку
Но при этом CB to CB binding работает, т.е. данные из БД загружаются без проблем
Изображения
 
Вложения
Тип файла: rar MyProj.newest.rar (4.03 Мб, 3 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
17.09.2019, 13:33
trimagick77, мне чтобы разобраться - надо запустить ваше приложение.
А запустить я его не могу.
Просто по коду - он слишком большое, чтобы понять что к чему.

Вот у вас будет готово приложение. Как вы собираетесь его устанавливать пользователем чтобы оно у них запускалось?
Вот мне таки же образом надо его установить.
0
0 / 0 / 0
Регистрация: 30.08.2019
Сообщений: 58
18.09.2019, 15:27  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А запустить я его не могу
Если честно не могу понять...
Не можете откомпилить? Там есть exe-шник в debug папке...
Или не можете сделать актуальную БД? Бекапы выше залил, проверил из них можно сделать...
Пробовал переделать в MS Access, но были проблемы , установил nuget пакет нужный, гуглил, но не получилось...
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Как вы собираетесь его устанавливать пользователем
Предполагается, что пользователи, или я через тимвьвер установят PostgreSQL и Net Core...

День не прошел зря. В итоге научился всё-таки во вью-модель передавать преобразованные из контекст файла DBSET в List<T>
Но тоже были проблемы... Пришлось каждый DBSET перебирать вручную, универсальный цикл сделать не смог, гуглил, но так и не смог сделать универсальный цикл чтобы можно было передать имя DBSET

Цитата Сообщение от Элд Хасп Посмотреть сообщение
и добавил в Модель методы для изменения данных, их сохранения
раньше это делал, но не в контекст файле, и передавал туда имя datagrid, получалось обновить, удалить, вставить строки в datagrid.
Опять же как сделать здесь в контексте без понятия...
Как сюда передать имя datagrid? И опять же нужно делать цикл по именам DBSET, чтобы ни писать одно и тоже много раз...

Проект прикрепляю
Вложения
Тип файла: rar MyProj.last.rar (4.03 Мб, 2 просмотров)
0
Заблокирован
18.09.2019, 19:58
trimagick77, не могу зайти в свой аккаунт.
Открыл новый - не знаю как надолго затянется решение с основным.

Что бы не было недопонимания.
Я сам начинающий.
Осваиваю C#+WPF чуть больше года.
С современными БД практически не знаком.
Чуток знаком (по темам здесь в разделе) с MS SQL.

PostgreSQL я установил, но как её запустить - не разобрался.
Если есть возможность - можно соединиться по TeamViewer и вы мне настроить PostgreSQL и Вашу БД.
0
0 / 0 / 0
Регистрация: 30.08.2019
Сообщений: 58
19.09.2019, 09:05  [ТС]
Цитата Сообщение от ЭлдХасп Посмотреть сообщение
Если есть возможность - можно соединиться по TeamViewer и вы мне настроить PostgreSQL и Вашу БД
С удовольствием напиши в личку когда на сайте будешь, или здесь на форуме...
Только в connectcion string в файле SemenovodstvoContext - поменяй пароль но свой PostgreSQL
еще раз заливаю финальный релиз приложения и БД
Вложения
Тип файла: rar PostgreCyber.rar (4.05 Мб, 4 просмотров)
0
Заблокирован
19.09.2019, 09:59
Цитата Сообщение от trimagick77 Посмотреть сообщение
напиши в личку когда на сайте будешь, или здесь на форуме...
Я даже в личку написать не могу!
До сих пор не решили проблему с аккаунтом!
0
0 / 0 / 0
Регистрация: 30.08.2019
Сообщений: 58
01.10.2019, 11:10  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Перейдите на нормальный MVVM
Огромное спасибо Элд Хасп за помощь, навыки и обучение и даже готовность помочь через teamviewer!
Проект был полностью переделан на MVVM, разобрался со всем, кроме красивого интерфейса, пока еще не научился рисовать...
за основу взял исходник с одного из туториалов MVVM
Привязка, CRUD во вьюмодели работает без проблем, с моделью тоже более менее разобрался...
Будут вопросы, буду писать, пока что рисовать красиво не научился в XAML
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
01.10.2019, 13:32
trimagick77, пишите - по возможности помогу.
0
0 / 0 / 0
Регистрация: 30.08.2019
Сообщений: 58
02.10.2019, 14:45  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
пишите - по возможности помогу
ОК
Как будет время, может, посмотрите
Как красиво нарисовать XAML. Много текста и Биндинга
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.10.2019, 14:45

Binding combobox в БД
Подскажите, как можно про binding строчку из combobox в БД??? Делаю, так но ругается: &lt;ComboBox Grid.Column=&quot;1&quot;...

ComboBox.SelectedIndex Binding to value-1
Добрый день! Возникла необходимость привязки данных, но чтобы от привязанного значения вычиталась единица. Сейчас привязка выглядит...

Binding DataSet + ComboBox
Создал привязку к BD (SQLite). Создал DataSet Установил ассоциативный тип CobmboBox Теперь вопрос как чисто в xaml привязать наш...

Binding ComboBox.Text
Доброго дня! Имеется окно, DataGrid, ComboBox и две модели данных. У DataGrid свойство ItemsSource =...

Binding combobox в textbox
Всем привет!!!! Подскажите, как можно binding выбранный item из combobox в textbox?


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru