ASP.NET:删除Dropdownlist中的特定项目

时间:2014-10-17 13:08:57

标签: c# asp.net

我正在为Time Start和Time End做一个代码。所以我做的是手动编码。

这是我的例子gui:

其HH:MM

enter image description here

小时值为00 - 23,则分钟为00 - 59

情景:

我的开始时间是8:00 [8小时,00分钟],它也有一个autopostback。因此,对于小时结束时间,它将不显示小时的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

正如你在那里看到的那样,程序只删除偶数00,02,04,06,08。如何在下拉列表中删除00-07之间的Staring?

4 个答案:

答案 0 :(得分:2)

您可以使用方法

DropDownList3.Items.Remove(DropDownList3.Items.FindByValue("02"));

答案 1 :(得分:1)

如果向前迭代,则在第一次迭代时删除第一个元素,即00.在第二次迭代中,第二个元素被移除,因为01向上移动到第一个元素,所以没有02。您需要向后迭代,以便将元素从最后一个元素移除到第一个元素。尝试:

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

答案 2 :(得分:1)

上面的代码假定索引和值始终相同,只要删除其中一个项目,就不会生效。 LINQ使这很简单。

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

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

在上面的代码中,您需要做的就是获取他们选择的值并将其放在userSelectedValue parm中。

答案 3 :(得分:-1)

你正在删除索引,而不是valuse ..因此当你循环并删除1,2,3,4,5,6,7时 您的值会更改其索引

e.g。
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

依旧......

最简单的解决方案:向后移除项目:)