Winforms с devexpress, привязка к DataTableC#

Место общения программистов C#
Ответить
Anonymous
 Winforms с devexpress, привязка к DataTable

Сообщение Anonymous »

Я знаю, как работает привязка в WPF, но то же самое в Winforms кажется немного неясным.
При привязке 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));
Теперь, чтобы поддерживать зависимости между значениями, я присоединил обработчики событий ColumnChanged и RowChanged к DataTable. Когда я изменяю строку данных в этих обратных вызовах, все становится странно нестабильным.
Когда я удаляю обработчики событий изменения, все вышеперечисленные методы, похоже, работают, в том числе при использовании режима DataSourceUpdateMode.OnValidation.
Итак, вопросы:
  • равны ли методы связывания? Я подозреваю, что BindingSource обеспечивает некоторую дополнительную ценность.
  • изменения в базовых данных, сделанные в обработчиках ColumnChanged или RowChanged, каким-то образом портят привязку? Я ожидал, что эти события дадут мне возможность использовать DataTable в качестве «наблюдаемой модели», чтобы я мог определять, когда что-то меняется в данных.


Подробнее здесь: https://stackoverflow.com/questions/790 ... -datatable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»