2012-05-24 5 views
0

Я вхожу в номера этажей в DropDownList в поле шаблона DetailsView. Количество этажей варьируется и вводится из предшествующего DDL в зависимости от количества этажей в выбранном здании. Как только количество этажей пройдено, оно должно перебирать числа до тех пор, пока не будет достигнут номер пола. В этом случае 15 этажей. Я делаю это вот так:C# для подсчета циклов в DetailsView DropDownList

 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 

Вот выход и проблема. Извините за теги goofy

[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. Любые советы приветствуются.

+0

Глупый вопрос - если вы «Запустите цикл, который заполняет список в 0, а затем сразу же удаляет запись с полом 0, почему бы не начать цикл' for' с 'i = 1'? Точно так же, почему бы не изменить условие завершения 'i <= cnt' на' i Bridge

+0

Это справедливый вопрос. Я сделал это уже и до сих пор не получаю результаты, которые я ищу. Если я не выполняю Item.Remove, тогда я получаю 2 записи для 15. Один правильный, а другой со значением 1. Мне нужно увидеть одну запись для 15 (или любого другого) с тем же значением. – Sean

ответ

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(); 
+0

Отлично! Первый; извините, я просто поставил один из 20 способов, которыми я пытался это сделать. Во-вторых. Благодаря! Это сделал трюк. Я не мог видеть лес для всех деревьев. – Sean

+0

Финал для тех, кто захочет: int i; int cnt = Convert.ToInt32 (tmpBox3.SelectedItem.Text); tmpBox3.Items.Clear(); для (i = 1; i <= cnt; i ++) { string floor = i.ToString(); tmpBox3.Items.Add (новый ListItem (пол, пол)); } tmpBox3.Items.Insert (0, новый ListItem ("- Select -", "0")); tmpBox3.SelectedIndex = 0; – Sean

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 
+0

Спасибо за предложения. К сожалению, я все еще получаю 1 и 15 на обеих учетных записях. – Sean

Смежные вопросы