Привязка данных: ComboBox.Text не обновляется при изменении SelectedValue? - PullRequest
1 голос
/ 16 марта 2010

У меня есть ProbationComboBox с SelectedValue, привязанным к RegistrationBindingSource, и DisplayMember, связанным с ProbationBindingSource.

Когда я вызываю RegistrationBindingSource.ResetCurrentItem(), свойство SelectedValue обновляется с правильным значением RegistrationBindingSource.ProbationID(), но свойство Text не обновляется.

Вот как я настраиваю привязку данных в ComboBox:

ProbationComboBox.DataBindings.Add(New System.Windows.Forms.Binding( _
   "SelectedValue", Me.RegistrationBindingSource, "ProbationID", True))

ProbationComboBox.DataSource = Me.ProbationBindingSource
ProbationComboBox.DisplayMember = "probation"
ProbationComboBox.ValueMember = "id"

Пока я не могу выяснить проблему с моей привязкой, я использую это как временное исправление:

DataRow row = CType(ProbationBindingSource.Current, DataRowView).Row
ProbationComboBox.Text = CType(row, RootNamespace.DataSet.probationRow).probation

Есть идеи?Спасибо!

Ответы [ 2 ]

1 голос
/ 17 марта 2010

Проблема была не в привязке данных к RegistrationBindingSource, а в моих данных и процедурах. Вот что происходит:

  1. Я бы очистил свойство Text всех элементов управления ComboBox перед загрузкой записи.

  2. ProbationBindingSource.Current обновлено либо с помощью привязки данных, либо путем настройки свойства ProbationComboBox.SelectedValue вручную.

  3. В большинстве случаев студенты не проходили испытательный срок, и значение ProbationBindingSource.Current обновлялось с тем же значением, что и раньше. В результате ProbationBindingSource.Position не изменился, а свойство Text не было обновлено.

Мое окончательное решение проверяет, будет ли обновляться данный SelectedValue перед очисткой свойства Text.

1 голос
/ 16 марта 2010

А как насчет вызова ResetBindings?

В файлах справки сказано, что при этом «элемент управления, связанный с BindingSource, перечитывает все элементы в списке и обновляет их отображаемые значения».

...