我正在为Time Start和Time End做一个代码。所以我做的是手动编码。
这是我的例子gui:
其HH:MM
小时值为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]);
}
它工作但显示输出错误..
以下是示例输出:
正如你在那里看到的那样,程序只删除偶数00,02,04,06,08。如何在下拉列表中删除00-07之间的Staring?
答案 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
依旧......
最简单的解决方案:向后移除项目:)