При привязке DataTable к нескольким элементам управления я столкнулся с аномалиями, когда привязка всей формы, казалось, переставала работать. . Поэтому я попробовал несколько разных способов привязки:
- привязка к таблице данных
Код: Выделить всё
comboBox.DataBindings.Add(new Binding("EditValue", dTable, "FieldName", true, DataSourceUpdateMode.OnPropertyChanged)); - привязка к набору данных
Код: Выделить всё
comboBox.DataBindings.Add(new Binding("EditValue", dsData, "TableName.FieldName", true, DataSourceUpdateMode.OnPropertyChanged)); - привязка к просмотру данных
Код: Выделить всё
comboBox.DataBindings.Add(new Binding("EditValue", dsData.Tables["Table"].DefaultView, "FieldName", true, DataSourceUpdateMode.OnPropertyChanged)); - привязка к промежуточному BindingSource
Код: Выделить всё
BindingSource bs = new BindingSource(); bs.DataSource = dsData.Tables["Table"]; comboBox.DataBindings.Add(new Binding("EditValue", bs, "FieldName", true, DataSourceUpdateMode.OnPropertyChanged));
Когда я удаляю обработчики событий изменения, все вышеперечисленные методы, похоже, работают, в том числе при использовании режима DataSourceUpdateMode.OnValidation.
Итак, вопросы:
- равны ли методы связывания? Я подозреваю, что BindingSource обеспечивает некоторую дополнительную ценность.
- изменения в базовых данных, сделанные в обработчиках ColumnChanged или RowChanged, каким-то образом портят привязку? Я ожидал, что эти события дадут мне возможность использовать DataTable в качестве «наблюдаемой модели», чтобы я мог определять, когда что-то меняется в данных.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -datatable