2012-08-11 62 views
0

我的組合框的工作,我是刷新組合框的值,首先我正在刪除所有的值,然後重新填充它。但它不起作用。代碼複製組合框中正在創建問題的值。這是我的代碼。組合框更新在C#

for (int i = 0; i < updateCombo.Items.Count; i++) 
    updateCombo.Items.RemoveAt(i); 

    //----------- Now Adding New Values -------- 
    updateCombo.Items.Add("Select an option . . ."); 

    SqlCommand command = new SqlCommand(Queries.qry9, connection); 
    SqlDataReader reader = command.ExecuteReader(); 

請幫助我解決這個問題。

+0

你確定查詢不返回重複條目嗎?使用updateCombo.Items.Clear一次 – 2012-08-11 10:35:02

+0

到德克勒所有項目如果有10個項目,並已刪除了其中五個,剩下留給5個項目,會發生什麼,當你要求刪除他們的第六屆? – GSerg 2012-08-11 10:35:49

+1

組合框清除沒有錯誤,每件事都可以。查詢只是按升序進行選擇。我仍然得到重複項目。 – greatmajestics 2012-08-11 11:28:42

回答

3

不知道爲什麼會happen-但如果Items.Count回來爲0,那麼你的循環將不會從項目列表中刪除任何現有的內容,你會得到重複。

你試過只是清除列表中的所有內容,無論使用:

updateCombo.Items.Clear(); 

這樣可以節省你不必通過所有這些迭代,通過一個消除他們一個反正。

+0

它的工作..我不知道什麼原始代碼背後的清除功能... dOES任何機構知道?仍然是正確的答案。感謝名單。 – greatmajestics 2012-08-11 11:31:12

1

你的for循環刪除項爲0,接着在1,則在2,依此類推。 但是,刪除0處的項目時,列表中的該位置不會保持爲空 - 其他項目會有效地向下移動一個。

所以,如果你改變了你的清算代碼:

for (int i = 0; i < updateCombo.Items.Count; i++) 
updateCombo.Items.RemoveAt(0); 

它應該工作。 但是,正如其他人所建議的,使用updateCombo.Items.Clear();是一種更好的方法。

+0

偉大的答案,它就像在Java中的表值刪除。 Thanx Jon。現在我清楚了。 – greatmajestics 2012-08-11 11:44:57