列表框已选择索引相同值错误索引号

本文关键字:索引 错误 选择 列表 | 更新日期: 2023-09-27 18:37:04

我在列表框中有相同的值。当我单击索引2(西班牙)时,它选择了索引0(美国)如何传递此错误?

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

谢谢。

这是我的代码;

    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);
    }

列表框已选择索引相同值错误索引号

因此,该问题是由美国和西班牙包含相同值的事实引起的。 ASP.NET 实际上不会获取列表框中单击的项的选定索引。相反,它使用您选择的值来确定索引。由于美国和西班牙具有相同的值,因此它会选择包含该值的第一个索引。

我不会使用 Response.Write 来获取 ListItem 的选定索引,而是在页面上放置一个标签并将其可见性设置为 false。

然后,在 SelectedIndexChanged 事件中,将标签的文本设置为 ListBox 的选定索引。

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

是你,我会写这样的代码:

        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。John Doe = 0, Jane Doe = 1, Mr. Smith = 2, Jane Doe = 3)。所以这个答案也将是这个问题的解决方案。您可以写:"

John Doe"、"Jane Doe (1)"、"Mr. Smith"、"Jane Doe (2)"或"John Doe (0)"、"Jane Doe (1)"、"Mr. Smith (2)"、"Jane Doe (3)"。