2009-12-31 4 views
1

Я пытаюсь сделать то, что я считаю, это не сложно, но еще - прямой подход не кажется, работает ...выпадающий ручной вязки

Я создал пользовательский элемент управления, и сковал его к DataTable, то я создан новый Binding и переплетены другой объект того же комбо (SelectedValue быть более точным) следующим образом:

this.cboValue.DataSource = dt; 
this.cboValue.ValueMember = "ID"; 
this.cboValue.DisplayMember = "Text"; 
valueBinding = new Binding("SelectedValue", value, "Value", false, DataSourceUpdateMode.OnPropertyChanged); 
this.cboValue.DataBindings.Add(valueBinding); 
valueBinding.BindingComplete += new BindingCompleteEventHandler(valueBinding_BindingComplete); 

Это работает прекрасно обновление объекта, когда это необходимо. Затем мне нужно было использовать другой подход для привязки, поскольку некоторые элементы управления нужно было заполнять вручную, поэтому я создал новый бизнес-объект и попытался привязать к нему элемент/массив этого объекта.

Дело в том, что при установке значения ValueMember я получаю DBNull.Value вместо значения, к которому я стремился при настройке привязки.

Мне удалось создать обходной путь - создание нового datatable для этого списка/массива бизнес-объекта и привязать его к таблице, но все же это кажется суматохой.

Кто-нибудь когда-либо пробовал что-то подобное?

ответ

2

Я думаю, что ваша основная проблема заключается в том, что таблица данных реализует некоторые интерфейсы, которые нет в стандартном массиве/списке.

попробуйте работать с BindingList <>. , а также сделать класс youe реализованным интерфейсом INotifyPropertyChanged.

Надеюсь, он решит все ваши проблемы

Смежные вопросы