我在列表框中有相同的值。当我点击Index2(西班牙)时,它选择了Index0(Usa) 我怎么能传递这个错误?
我必须在列表框或替代控件中使用相同的值
感谢。
这是我的代码;
itertools
答案 0 :(得分:0)
因此问题是由于USA和SPAIN包含相同的值。 ASP.NET实际上并不获取ListBox中所单击项的选定索引。相反,它使用您选择的值来确定索引。并且因为USA和SPAIN具有相同的值,所以它选择包含该值的第一个索引。
我没有使用Response.Write来获取ListItem的选定索引,而是在页面上放置一个标签并将其可见性设置为false。
然后,在SelectedIndexChanged事件中,将标签的文本设置为ListBox的选定索引。
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Label1.Text = ListBox1.SelectedIndex.ToString();
}
答案 1 :(得分:0)
如果我是你,我会写这样的代码:
if (!IsPostBack)
{
ListItem li = new ListItem();
li.Text = "(06) USA";
li.Value = "01";
ListItem li2 = new ListItem();
li2.Text = "(34) ITALY";
li2.Value = "02";
ListItem li3 = new ListItem();
li3.Text = "(06) SPAIN";
li3.Value = "03";
ListBox1.Items.Add(li);
ListBox1.Items.Add(li2);
ListBox1.Items.Add(li3);
}
然后我将括号部分作为值。
PS:我注意到,如果列表框中的文本相同,它将返回最小的SelectedIndex
值(例如“ John Doe”,“ Jane Doe”,“ Mr。Smith”,“ Jane Doe” “。在这种情况下,即使您单击第二个Jane Doe,它也会返回1。JohnDoe = 0,Jane Doe = 1,Smith先生= 2,Jane Doe = 3)。因此,这个答案也将解决该问题。您可以输入:“ John Doe”,“ Jane Doe(1)”,“ Smith先生”,“ Jane Doe(2)”或“ John Doe(0)”,“ Jane Doe(1)”,“ Mr。 Smith(2)”,“ Jane Doe(3)”。