Winform BindingSources - Вопрос - PullRequest
1 голос
/ 15 января 2010

У меня есть форма окна (net 2.0) с элементами управления, привязанными к сущности (w / INotifyPropertyChanged) через BindingSource..works.

В той же форме у меня есть выпадающий список, который также подключен через BindingSource..works

Вот пример соответствующего кода:

m_PlanItemLookupBindingSource.DataSource = GetBusinessLogic().RetrievePaymentPlanLookups(); // Collection of PaymentPlans
paymentPlanType.Properties.DataSource = m_PlanItemLookupBindingSource;
paymentPlanType.Properties.DisplayMember = "Name";
paymentPlanType.Properties.ValueMember = "ID";
paymentPlanType.DataBindings.Add(new Binding("EditValue", m_PlanBindingSource, "PaymentPlanID", true, DataSourceUpdateMode.OnPropertyChanged, null, "D"));

agencyComission.DataBindings.Add(new Binding("EditValue", m_PlanBindingSource, "AgencyCommission", true, DataSourceUpdateMode.OnPropertyChanged, null, "P1"));
billingType.DataBindings.Add(new Binding("Text", m_PlanBindingSource, "BillingType"));

Поэтому, когда я изменял значение в раскрывающемся списке, я думал, что свойство Current m_PlanItemLookupBindingSource Current будет меняться вместе со свойством PaymentPlanID объекта, который действительно изменяется.

Просто немного сбит с толку.

Спасибо заранее, Стивен

1 Ответ

1 голос
/ 03 июня 2010

BindingSource принимает значение в элементе управления и устанавливает его в базовом источнике, который является текущим объектом, определенным свойством Position объекта BindingSource.

Таким образом, когда вы выбираете значение в раскрывающемся списке, свойство PaymentPlanID базового объекта устанавливается с новым выбранным значением. Базовый объект идентифицируется свойством Current в BindingSource.

Если вы хотите переместить свойство Current к объекту, выбранному в раскрывающемся списке, вы должны использовать методы MoveFirst, MoveLast, MovePrevious или MoveNext или свойство Position в BindingSource.

На мой взгляд, вы можете сделать следующее: в обработчике события Changed или ValueChanged в выпадающем списке вы получаете индекс выбранного элемента, который вы можете передать в BindingSource.Position. свойство.

Changed or ValueChanged event handler
    ...
    int index = DropDownList.ListIndex
    BindingSource.Position = index
    ...
End event handler

Вы должны удалить DataBinding, которая связывает раскрывающийся список с раскрывающимся списком EditValue с PaymentPlanID. Таким образом, PaymentPlanId в базовом объекте не устанавливается в выбранное значение до изменения позиции в BindingSource.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...