2014-10-17 52 views
1

我正在爲時間開始和時間結束做一個代碼。所以我做的是手動編碼。ASP.NET:刪除下拉列表中的特定項目

這裏是我的示例GUI:

其HH:MM

enter image description here

價值小時是從00 - 23那麼對於分鐘,距離00 - 59

方案:

我的開始時間爲8:00 [8小時00分],它也有自動回覆功能。因此,對於一小時的結束時間也不會在小時顯示00-07只會顯示8號到23

這裏是我的代碼:

int _intDiff = _tmrStart - _tmrEnd; 

for (int x = 0; x <= _intDiff; x++) 
{ 
    DropDownList3.Items.Remove(DropDownList3.Items[x]); 
} 

它的工作,但它的顯示輸出錯誤..

下面是示例輸出:

enter image description here

正如你可以看到有,該程序只刪除甚至numbe r 00,02,04,06,08。我怎樣才能讓00到07的凝視在下拉列表中被刪除?

回答

1

如果通過向前迭代,則第一個元素在第一次迭代中被刪除,即00。在第二次迭代中,第二個元素被刪除,這是02,因爲01已經移動到第一個元素。您需要向後迭代,以便將元素從最後一個移除到第一個。嘗試:

for (int x = _intDiff -1; x > -1; x--) 
{ 
    DropDownList3.Items.Remove(DropDownList3.Items[x]); 
} 
+0

@ BenRobinson..Thank你! – 2014-10-17 14:33:32

-1

要刪除索引,不valuse。因此,當你循環和刪除1,2,3,4,5,6,7
你的價值觀改變自己的指數

例如
IDX,VAL
0,1
1,2
2,3
3,4
4,5
5,6
6,7

除去0
0, 2
1,3-
2,4-
...
...

刪除1
0,2 1,4
2,5
3,6

等等...

簡單的解決方案:向後刪除的項目:)

1

上述代碼假定索引和值始終是相同的,只要項中的一個被除去這是不正確的。 LINQ使這個簡單。

//DropDownList3.Items.Remove(DropDownList3.Items[x]); 

var item = DropDownList3.Items.Select(p=>p.value == userSelectedValue).first(); 
DropDownList3.Remove(item); 

在代碼中,首先需要做的是獲取它們所選的值並將其放入userSelectedValue參數中。

2

您可以使用方法

DropDownList3.Items.Remove(DropDownList3.Items.FindByValue("02")); 
相關問題