C# for 循环计数到详细信息视图下拉列表

本文关键字:详细信息 视图 下拉列表 for 循环 | 更新日期: 2023-09-27 18:35:18

我正在DetailsView模板字段中的DropDownList中输入楼层号。 楼层数是可变的,根据所选建筑物中的楼层数从先前的 DDL 输入。传递楼层数后,它应遍历数字,直到达到楼层号。 在这种情况下,有15层。我是这样做的:

     int i;
            int cnt = Convert.ToInt32(tmpBox3.SelectedItem.Text); //15
            for (i = 0; i <= cnt; i++)
            {
                tmpBox3.Items.Insert(i, new ListItem(i.ToString(), i.ToString()));
            }
            tmpBox3.Items.Remove(new ListItem("0"));  //remove zero
            tmpBox3.Items.Remove(new ListItem(cnt.ToString())); //remove duplicate 15
            tmpBox3.Items.Insert(0, new ListItem("--Select--","0")); //add select
            tmpBox3.SelectedIndex = 0; // make select default choice

这是输出和问题。对不起,愚蠢的标签

[option selected="selected" value="0"]--Select--[/option]
[option value="1"]1[/option]
[option value="2"]2[/option]...
[option value="14"]14[/option]
[option value="1"]15[/option]

最后一个条目值是问题所在。 我似乎做不到那个 15。欢迎任何提示。

C# for 循环计数到详细信息视图下拉列表

首先,如果你不想要它,为什么要添加项目 0?让它像

for (i = 1; i <= cnt; i++)
{
  string floor = i.ToString();
  tmpBox3.Items.Add(new ListItem(floor, floor));
}
其次,我想你的 tmpBox3 在

开始时不是空的,所以在你得到 tmpBox3.SelectedItem.Text 后,做一个

tmpBox3.Items.Clear();

如果我理解你的问题,你就不能这样做吗......

int i; 
// Substract 1 to eliminate last floor
int cnt = Convert.ToInt32(tmpBox3.SelectedItem.Text) - 1; 
tmpBox3.Items.Add(0, new ListItem("--Select--","0")); //add select 
// Notice starting at 1 instead of 0
for (i = 1; i <= cnt; i++) 
{ 
     tmpBox3.Items.Add(i, new ListItem(i.ToString(), i.ToString())); 
} 
tmpBox3.SelectedIndex = 0; // make select default choice 

或者其他方式...

int i;  
int cnt = Convert.ToInt32(tmpBox3.SelectedItem.Text);  
tmpBox3.Items.Add(0, new ListItem("--Select--","0")); //add select  
// Notice starting at 1 instead of 0 and make "less than" instead of "less than or equal"
for (i = 1; i < cnt; i++)  
{  
     tmpBox3.Items.Add(i, new ListItem(i.ToString(), i.ToString()));  
}  
tmpBox3.SelectedIndex = 0; // make select default choice