Всем привет! Кто знает как можно решить такую задачку: Есть класс Report
Код | public class Report { public virtual int Id { get; private set; } public virtual Employee Employee { get; set; } public virtual IList<Expense> Expenses { get; set; } public virtual IList<MoneyTransfer> Transfers { get; set; } public virtual string Comment { get; set; } public Report() { Expenses = new List<Expense>(); Transfers = new List<MoneyTransfer>(); } }
|
Данный класс содержит 2 коллекции Expenses и Transfers. Transfers состоит из классов MoneyTransfer:
Код | public class MoneyTransfer { public virtual int Id { get; private set; } public virtual Report Report { get; set; } public virtual Currency ReceivedCurrency { get; set; } public virtual string Comment { get; set; } }
|
В свою очередь,MoneyTransfer имеет свойство класса Currency:
Код | public class Currency { public virtual int Id { get; private set; } public virtual string Name { get; set; } }
|
Также, отдельно есть список нескольких валют:
Код | IList<Currency> CurrencyList
|
Заполняется он из БД.
Есть dataGridView. Хочу в нем отобразить коллекцию Transfers. Но чтобы в таблице в колонке "Валюта" был comboBox со всеми возможными валютами из CurrencyList. И в нем выбиралась указанная валюта из MoneyTransfer.
Тоесть:
Код | DataGridViewComboBoxColumn Column3 = new DataGridViewComboBoxColumn(); Column3.HeaderText = "Валюта"; Column3.DataPropertyName = "ReceivedCurrency"; Column3.DisplayMember = "Name"; Column3.ValueMember = "Currency";
//Заполняем валютами выпадающий список foreach (Currency cur in CurrencyList) { Column3.Items.Add(cur); }
dataGridView1.DataSource = report.Transfers; dataGridView1.Columns.Add(Column3);
|
В итоге, стоит только выбрать любую валюту из выпадающего списка как появляется dataGridView.DateError В comboBox изначально ничего выбрано, хотя должно.
Если создать отдельный comboBox от dataGridView
Код | comboBox3.DataBindings.Clear(); comboBox3.DataBindings.Add("SelectedItem",report.Transfers,"ReceivedCurrency"); comboBox3.DisplayMember = "Name"; //то что будет отображаться comboBox3.ValueMember = "Currency"; //то с чем будет ассоциироватьс comboBox3.DataSource = CurrencyList;
|
То работает почти как задумано.
|