2014-04-25 4 views
0

У меня есть winform, которая имеет элементы управления, привязанные к связующему источнику с именем MemberBS, который связан с пользовательским объектом DomainModel.Member. Объект-член привязан к таблице в базе данных sql-сервера, называемой членами.Обновление элементов управления winform для привязки источника привязки к объекту после изменения источника данных

Среди элементов управления в форме у меня есть 4 текстовых поля, они связаны следующим образом.

 DuesOwingCE.DataBindings.Add("Text", MemberBS, "DuesOwing", true, DataSourceUpdateMode.OnPropertyChanged); 
     InitOwingCE.DataBindings.Add("Text", MemberBS, "InitOwing", true, DataSourceUpdateMode.OnPropertyChanged); 
     OtherOwingCE.DataBindings.Add("Text", MemberBS, "OtherOwing", true, DataSourceUpdateMode.OnPropertyChanged); 
     AmountOwingCE.DataBindings.Add("Text", MemberBS, "AmountOwing", true, DataSourceUpdateMode.OnPropertyChanged); 

Пользователь нажимает кнопку, чтобы вводить транзакции. Я передаю объект-член члена, который в настоящее время редактируется в диалоговом окне. Пользователь вводит транзакции для участника, а затем щелкает «Сохранить». Кнопка «Сохранить» вызывает метод CalculateOwing. Этот метод пересчитывает сборы, инициирование, другое и общее из-за члена, сохраняет объект-член, который по очереди передает сохранение в базовый источник данных.

Форма сделки закрывается, и пользователь возвращается к форме участника. Теперь, как я могу получить текстовые поля для обновления, чтобы отображались новые балансы. Я пробовал MemberBS.ResetBindings (false), но это не работает.

является единственным решением, чтобы перезагрузить объект снова из источника данных

MemberBS.DataSource = Repository.GetMember (SocSecNo);

или есть лучший?

ответ

0

Чтобы позволить вашим элементам управления автоматически отражать динамические изменения источника привязки, ваш класс должен обеспечить правильное изменение свойств уведомлений. Example показывает, как создать класс, который реализует INotifyPropertyChanged. Для концепции см. this.

При реализации интерфейс связывается с связанным элементом управления с изменениями свойств бизнес-объекта.

0

Это довольно старая тема ... Лично я использовал bindingsource.ResetBindings (false) с вызовом Invoke для обновления моих элементов управления.

, например:

if (InvokeRequired) 
{ 
    this.Invoke(new Action(()=>this.bindingSource.ResetBindings(false))); 
} 
else 
{ 
    this.bindingSource.ResetBindings(false); 
} 
Смежные вопросы