Синхронизация элементов управления привязкой данных на сложной форме win - PullRequest
1 голос
/ 11 марта 2009

У меня есть довольно сложная форма окна с представлением с вкладками для набора данных 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)

Кажется, я никогда не смогу полностью избежать какой-либо цепной реакции, при которой события, изменяющие положение источника привязки, запускаются несколько раз, что приводит к несоответствиям с источниками привязки, которые неправильно синхронизируются. Я не уверен, что лучший способ справиться с этой логикой синхронизации.

Как другие люди подходят к этому?

1 Ответ

0 голосов
/ 07 августа 2009

Я бы рассмотрел создание ваших собственных событий и чтобы каждое, где данные могут быть изменены, вызывало «измененное» событие, и везде, где вы делаете привязку данных, добавляете обработчик для события, чтобы убедиться, что он перехватывает событие и обновляет его текущее представление .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...