在复杂的winform上同步数据绑定控件

时间:2009-03-11 16:16:09

标签: winforms data-binding

我有一个非常复杂的窗体,带有使用强类型数据集和绑定源组件的grandParent> Parent> Child数据集的选项卡式表示。

使用bindngsource来减少雇佣制度;我的问题是我有一些数据的多个“并行”视图(例如,第一个选项卡是打开作业的摘要视图,其他选项卡显示此数据的父级和子级视图)以及“查找”下拉列表。我试图保持同步所有这些,以便更改孙子记录将更新父绑定源,以及同步查找下拉列表。

我正在努力让它正常工作;我有表单级属性,包含当前作业和同步表单的例程,例如:

on bindingsource.positionchanged:

 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 :(得分:0)

我会考虑创建自己的事件并让每个数据都可以更改的位置引发“已更改”事件,并且您在进行数据绑定的任何地方都会为事件添加处理程序以确保它捕获事件并更新其当前视图