2016-03-02 8 views
-1

У меня одинаковые значения в списке. Когда я нажимаю на Index2 (Испания), он выбрал Index0 (Usa) как я могу передать эту ошибку?listbox selectedindex такое же значение неверный индексный номер

я должен использовать одни и те же значения в ListBox или альтернативного управления

Спасибо.

вот мой код;

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      ListItem li = new ListItem(); 
      li.Text = "USA"; 
      li.Value = "06"; 
      ListItem li2 = new ListItem(); 
      li2.Text = "ITALY"; 
      li2.Value = "34"; 
      ListItem li3 = new ListItem(); 
      li3.Text = "SPAIN"; 
      li3.Value = "06"; 
      ListBox1.Items.Add(li); 
      ListBox1.Items.Add(li2); 
      ListBox1.Items.Add(li3); 

     } 

    } 
    protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     Response.Write(ListBox1.SelectedIndex); 
    } 
+0

Это ответ. Письмо. Вам нужно использовать его? – Kramb

+0

Если вам нужен только метод * Response.Write *, вы можете попробовать использовать ответ @Kramb. Но если вам нужна логика, лучшее решение, как я думаю, будет использовать разные значения. например даже если вы сохраните его значение в базе данных, вы не сможете решить его самостоятельно, это США или Испания. Поэтому я рекомендую использовать разные значения. – Khazratbek

+0

Вопрос утверждает, что OP должен использовать одни и те же значения. – Kramb

ответ

0

Таким образом, проблема вызвана тем фактом, что США и ИСПАНИЯ имеют одинаковое значение. ASP.NET фактически не получает выбранный индекс щелкнутого элемента в ListBox. Вместо этого он использует значение, которое вы выбрали для определения индекса. И поскольку США и ИСПАНИЯ имеют одинаковое значение, он выбирает первый индекс, который содержит это значение.

Вместо использования Response.Write, чтобы получить выбранный индекс ListItem, я бы поместил метку на страницу и установил ее видимость на false.

Затем в событии SelectedIndexChanged установите текст метки в выбранный индекс ListBox.

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    Label1.Text = ListBox1.SelectedIndex.ToString(); 
} 
+0

Я не думаю, что это сработает. У меня возникла проблема, когда у меня есть повторяющиеся записи в 'ListBox', и я не получаю' SelectedIndexChanged' при нажатии на дубликат выбранного в данный момент элемента. Кажется, не существует обходного пути, позволяющего иметь повторяющиеся значения. –