0

我正在将楼层号码输入到 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。任何提示都是最受欢迎的。

4

2 回答 2

0

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

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  
于 2012-05-24T15:11:14.263 回答
0

首先,如果不想要,为什么要添加项目 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();
于 2012-05-24T15:30:00.933 回答