В настоящее время я создаю WinForm в VB.NET, привязанную к базе данных доступа.
По сути, у меня есть две формы: одна - это форма поиска, используемая для поиска в базе данных, а другая - форма сведений. Вы запускаете поиск в searchForm, и он возвращает список первичных ключей и несколько других идентифицирующих значений. Затем дважды щелкните запись, которую хотите просмотреть, и она загрузит форму сведений.
Форма Подробности содержит набор элементов управления с привязкой к данным для отображения данных: в основном текстовые поля и флажки. Я установил его, используя пользовательский интерфейс для построения формы, а затем установил свойство DataBindings каждого элемента управления в значение «TblPropertiesBindingSource -», где name name - это одно из значений в таблице (например, PropertyID или HasWoodFloor).
Затем, когда вы дважды щелкаете запись в форме поиска, я обрабатываю событие, анализируя Первичный ключ (PropertyID) из выбранной строки, а затем сохраняя его в форме сведений:
Примечание. Подробно - это форма сведений, которая открывается для отображения информации
Private Sub propView_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles propView.CellDoubleClick
Dim detail As frmPropertiesDetail = New frmPropertiesDetail
detail.id = propView.Rows(e.RowIndex).Cells(0).Value
detail.Show()
End Sub
Затем, после загрузки формы сведений, он устанавливает фильтр на BindSource следующим образом:
TblPropertiesBindingSource.Filter() = "PropertyID=" & id
Пока это прекрасно работает. Все элементы управления в форме сведений будут отображать правильную информацию. Проблема в обновлении изменений.
Сценарий:
Если у меня есть пользователь, загружающий данные, скажем, для свойства 10001, он отобразит описание в текстовом поле с именем descriptionBox, которое идентично значению значения описания для этой записи в базе данных. Я хочу, чтобы пользователь затем мог изменить текст текстового поля (что он в настоящее время может делать) и нажать кнопку сохранения (saveBut), чтобы форма обновила все значения в элементах управления в базе данных.
Теоретически, это должно быть сделано, поскольку элементы управления являются объектами DataBound, поэтому я могу избежать написания кода, в котором каждая запись в строке базы данных принимает значение выровненного элемента управления.
Я пытался вызвать PropertiesTableAdapter.Update (PropertiesBindingSource.DataSource), но, похоже, это не так.