У меня есть довольно сложная форма окна с представлением с вкладками для набора данных grandParent> Parent> Child с использованием строго типизированного набора данных и компонентов bindingsource.
Спускаясь по найму, мы получаем удовольствие, используя bindngsource; Моя проблема в том, что у меня есть несколько «параллельных» представлений некоторых данных (например, 1-я вкладка представляет собой сводный вид открытых заданий, другие вкладки показывают представления этих данных в родительском и дочернем виде), а также раскрывающиеся списки «Поиск». Все это я пытаюсь синхронизировать, чтобы изменение записи внука обновило родительские источники привязки, а также синхронизировало раскрывающиеся списки поиска.
Я изо всех сил пытаюсь заставить это работать должным образом; У меня есть свойства уровня формы, содержащие текущее задание и процедуры, которые синхронизируют форму, например:
на bindingsource.position изменилось:
SetCurrentDetailJob(Me.PKSitesJobsBindingSource)
, что:
Private Sub SetCurrentJob(ByVal JobBindingSource As BindingSource)
If JobBindingSource.Position > -1 Then
_CurrentJob = CType(CType(JobBindingSource.Current, DataRowView).Row, ARCallDataSet.JobsRow)
_CurrentSite = _CurrentJob.GetParentRow("PK_Sites_Jobs")
_CurrentCompany = _CurrentSite.GetParentRow("PK_Company_Sites")
End If
, а затем подпрограмма синхронизации формы, которая делает такие вещи:
CompanyBindingSource.Position = CompanyBindingSource.Find("companyid", drsite.CompanyID)
Кажется, я никогда не смогу полностью избежать какой-либо цепной реакции, при которой события, изменяющие положение источника привязки, запускаются несколько раз, что приводит к несоответствиям с источниками привязки, которые неправильно синхронизируются.
Я не уверен, что лучший способ справиться с этой логикой синхронизации.
Как другие люди подходят к этому?