2016-12-28 65 views
0

所以當我用在主窗口構造此方法的數據是否正確:組合框選項不改變,當數據源更新

public void Load_Dropdown(configuration con) 
{ 
    bindinglist = new BindingList<ListCollection.ListsList>(Get.ListCollection(con).List); 
    BindingSource bSource = new BindingSource {DataSource = bindinglist}; 
    sharepointListSelect.DataSource = bSource; 
    sharepointListSelect.DisplayMember = "Title"; 
    sharepointListSelect.ValueMember = "ID"; 
} 

而且這工作得很好,但是當我嘗試調用類似的方法來更新在稍後的選項中,沒有任何反應,因爲在下拉列表中的選項不會改變。

我打電話來更新它看起來像這樣的方法:

public bool Reload_Dropdown(configuration con) 
{    
    bindinglist = new BindingList<ListCollection.ListsList>(Get.ListCollection(con).List); 
    BindingSource bSource = new BindingSource { DataSource = bindinglist }; 
    sharepointListSelect.DataSource = bSource; 
    sharepointListSelect.DisplayMember = "Title"; 
    sharepointListSelect.ValueMember = "ID"; 


    //There is other logic here, but i left it out as it isn't relevant 
    return true; 
} 

順便說一下,綁定列表的對象是在類初始化爲:

private BindingList<ListCollection.ListsList> bindinglist; 

我知道,現在我可以重用第一種方法 - 但是我把聲明分開來調試爲什麼它首先失敗了更新。

+0

考慮發佈[MCVE]。首先創建MCVE將幫助您找到並解決問題。如果您自己無法解決問題,那麼它將幫助其他用戶重現問題以幫助您。而不是一次又一次地創建'BindingSource'的不同實例,只需在設計時在表單上放置一個'BindingSource'並使用它。 –

+0

我想出了問題所在。這是我的一個疏忽,我將回答描述我如何處理這個問題。 – Bitz

回答

0

我很笨 - 所以這個問題不是用任何一種方法,而是我如何調用方法。如果它不是靜態的,你不能從另一個表單調用一個方法。對我而言,巨大的監督 - 我覺得有點過於習慣於MVC。

只要您使用相同的方法調用此解決方案,此解決方案將正常工作。我選擇了一個可以刷新下拉菜單的按鈕。

相關問題