У меня проблема с привязкой данных в Windows Forms.Как связать свойство DataGridView с WinForms с EF (сбор) в сценарии master-detail?
Вот часть модели EF, которая имеет отношение к истории:
namespace Model
{
class Person
{
[Key]
public int Id { get; set; }
public String Name { get; set; }
public virtual ICollection<Receipt> Receipts { get; set; }
}
class Receipt
{
[Key]
public int Id { get; set; }
public DateTime Timestamp { get; set; }
public double Value { get; set; }
public int PersonId { get; set; }
public virtual Person Person { get; set; }
}
}
Существует BindingSource называется peopleBindingSource
, который установлен в класс Model.Person
. В коде позади, я делаю это:
db.People.Include(p => p.Receipts).Load();
peopleBindingSource.DataSource = db.People.Local.ToBindingList();
Textbox имеет свои DataBindings установлен peopleBindingSource
как DataSource и Name
как собственность.
Когда я запускаю приложение, навигатор привязки работает правильно, показывая разные люди, когда я нажимаю предыдущие и следующие кнопки. Текстовое поле с именем человека также заполнено правильно.
Теперь здесь возникает проблема:
На той же форме, есть DataGridView. Я хочу, чтобы показать строку для каждой из полученных Человек.
Я попытался связать dataGridView's DataSource
с Receipts
навигационной функцией peopleBindingSource
.
Я ожидал, что gridview будет обновлять свой DataSource в соответствующей коллекции квитанций точно так же, как текстовое поле обновляет свойство Text при изменении навигации. Настройка в основном одинакова.
Дело в том, что ошибка не выбрасывается, а сетка остается пустой (она даже не создает заголовок столбцов).
Почему эта привязка не работает, и может ли это быть сделано внутри дизайнера? Как правильно настроить привязку (без программной обработки события изменения на peopleBindingSource и установки DataSource сетки вручную из peopleBindingSource.Current)?
можете ли вы разместить код, в котором вы привязываете источник данных к вашему datagridview? – stefankmitph
Я не могу, потому что я не связывал его в коде, а в дизайнере. Однако я нашел, в чем проблема. –