2016-03-02 35 views
-1

我在列表框中有相同的值。当我点击Index2(西班牙)它选择Index0(美国) 我怎么能通过这个错误?listbox selectedindex相同的值错误的索引号

我必须在列表框或替代控件中使用相同的值

谢谢。

这是我的代码;

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

这是Response.Write。你需要使用它吗? – 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'。似乎没有解决方法可让您拥有重复的值。 –