2013-12-16 83 views
5

我有一個組合框,那就是我如何填寫它的數據:默認值數據源

SectorCollection sectorCollection = sectorController.SearchAll(); 

comboSector.DataSource = null; 

comboSector.DataSource = sectorCollection; 
comboSector.DisplayMember = "titleSector"; 
comboSector.ValueMember = "idSector"; 

我想是設置前的數據,就像沒有在ComboBox文本值。 就像「選擇一個扇區」。所以用戶可以知道他在選擇什麼。

+3

這是winform還是asp.net? – Steve

回答

3

如果您使用的是WinForm的組合框,那麼你應該在代碼這樣的事情

sectorCollection.Insert(0, new Sector() {idSector=0, titleSector="Select a sector"}) 

comboSector.DataSource = sectorCollection; 
comboSector.DisplayMember = "titleSector"; 
comboSector.ValueMember = "idSector"; 

您需要添加選擇提示作爲被添加到一個新的Sector實例然後將集合綁定到您的組合框。當然這可能是一個問題,如果你使用集合用於其他目的的一部分組合顯示

+0

這工作,謝謝。 – Jonas452

+0

+1接近我需要的幫助。 – ghostJago

+1

@ghostJago缺少完全有用的東西? – Steve

4

就在索引0後插入一個新的項目作爲默認的DataBind()

comboSector.DataSource = sectorCollection; 
comboSector.DisplayMember = "titleSector"; 
comboSector.ValueMember = "idSector"; 
comboSector.DataBind(); 

comboSector.Items.Insert(0, "Select a Sector."); 

如果這是WinForms(你沒有說),那麼你會在索引0一個新的項目添加到sectorCollection在分配給組合框之前。所有其他代碼保持不變:

sectorCollection.Insert(0, new Sector() { idSector = 0, titleSector = "Select a sector." }); 
+0

+1正確,簡潔和廣泛使用的解決方案。 – nestedloop

+0

但是在ComboBox中沒有「DataBind」方法,我知道必須將數據綁定到組合框,以便可以更改它。但我該怎麼做? – Jonas452

+0

這是winforms嗎? – DGibbs

1

我認爲,而不是添加一個虛擬物品,它總是在列表的頂部,只需將SelectedIndex設置爲 - 1並添加您的文本:

comboBox1.SelectedIndex = -1; 
comboBox1.Text = "Select an item";