listbox selectedindex相同的值错误的索引号

时间:2016-03-02 23:26:47

标签: c# asp.net listbox listitem selectedindex

我在列表框中有相同的值。当我点击Index2(西班牙)时,它选择了Index0(Usa) 我怎么能传递这个错误?

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

感谢。

这是我的代码;

itertools

2 个答案:

答案 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)”。