2013-03-25 1 views
0

В моем C# WinForm у меня есть источник привязки и вид сетки данных. В событии Form_Load;Связывание данных с источника привязки

_bsCompany = new BindingSource(); 
_listOfCompany = CompanyService.GetListCompany();//Gets a listofCompany 
_bsCompany.DataSource = _listOfCompany; 

dgvCompany.DataSource = _bsCompany; 

И я привязал его к текстовому полю;

txtCompanyID.DataBindings.Add("Text", _bsCompany, "CompanyID"); 

Это работающий. Когда я щелкаю любую запись в gridview, в текстовом поле отображается CompanyID.

Мой вопрос: если я удалю одну из компаний из списка, привязка застряла, и текстовое поле не отображает выбранное значение из datagridview. Значение для удаленного элемента находится в текстовом поле после удаления;

Я делаю неправильно? Нужно ли очищать и переписывать текстовое поле?

РЕДАКТИРОВАТЬ: Я очистил и восстановил, как это, но та же проблема.

txtCompanyID.DataBindings.Clear(); 
txtCompanyID.DataBindings.Add("Text", _bsCompany, "CompanyID"); 
+0

Попробуйте и посмотрите, хочу волю бывает. –

ответ

0

OK Я сделал это так; (Забыла обновить вопрос с тем, как я решил эту проблему)

_listOfCompany.Remove(company); 
_bsCompany.ResetBindings(true); 

Это приведет к сбросу привязок между элементами управления и источником данных

0

Попробуйте это вместо этого.



    txtCompanyID.DataBindings.Add("Text", dgvCompany.DataSource, "CompanyID"); 

0

вы можете попробовать это вместо

txtCompanyID.DataBindings.Add(new Binding("Text", _bsCompany, "CompanyID"));