C#For Loop Counting into DetailsView DropDownList

时间:2012-05-24 15:06:08

标签: c# drop-down-menu detailsview

我在FloorView中输入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]

最后一个条目值是问题。我似乎无法做到这一点。任何提示都是最受欢迎的。

2 个答案:

答案 0 :(得分: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  

答案 1 :(得分: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();