2012-05-14 51 views
0

我正在創建一個表單,它將充當主 - 細節編輯器。我在這個表單上有兩個控件。一個基本上是主項目的清單,另一個控制是項目的細節。我試圖在兩個控件中使用相同的BindingSource對象,以便在主控件上進行更改時,詳細控件將得到更新。在兩個控件之間共享綁定源不起作用

在我的表單中我有:

EmployerCollection employerCollection = new EmployerCollection(); 
employerCollection.GetMulti(null, 0, new SortExpression(EmployerFields.Name | SortOperator.Ascending)); 
bsEmployers.DataSource = employerCollection; 

masterControl.Init(bsEmployers); 
detailControl.Init(bsEmpoyers); 

在我masterControl我:

public void Init(BindingSource bs) 
{ 
    bsEmployers = bs; 
} 

但是我的生活,我不能讓我的主控以顯示數據當我通過這種方式傳遞它時綁定源。

我可以綁定只有工作,如果我刪除bsEmployers = BS線和移動其他邏輯如下:

public void Init(BindingSource bs) 
    { 
     EmployerCollection employerCollection = new EmployerCollection(); 
     employerCollection.GetMulti(null, 0, new SortExpression(EmployerFields.Name |    SortOperator.Ascending)); 
     bsEmployers.DataSource = employerCollection; 
    } 

沒有人有任何想法是什麼,我不能傳遞的BindingSource對象中分享它?我嘗試在我的控件中調用RefreshBindings,但它似乎沒有任何影響。

謝謝。

+0

當您分配bsEmployers = bs;你會覆蓋綁定源的引用,但所有的控件仍然綁定到舊的bsEmployers。嘗試從窗體設計器中移除綁定源,並以編程方式創建它,並將其分配給正在使用它的所有子控件。你也可以嘗試調用bsEmployers.DataSource = bs.DataSource; –

回答

0

我不認爲BindingSource是打算用這種方式。我建議將EmployerCollection值傳遞給Init方法,並讓每個控件使用EmployerCollection創建它自己的BindingSource。

相關問題