Listbox SelectedIndex总是返回-1



我遇到了一个问题,当我试图从codeehind中的asp:listbox中获取selectedindex时,它总是保持-1,即使在被选中的页面上也是如此。我每分钟都在全面更新这个列表。对于加载listItems,整个列表将被擦除并再次写回。

代码示例:

<asp:ListBox ID="ListBox1" runat="server" 
   OnSelectedIndexChanged="ListBox1_SelectedIndexChanged" 
   AutoPostBack="false">                
</asp:ListBox>

在码尾:

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   itemsIndex = ListBox1.SelectedIndex.ToString(); //It is always -1
   itemToBeRescheduled = ListBox1.SelectedItem.Value;
}

尝试使用if(!isPostBack)。。但索引保持为-1,只从列表中删除了我的项目。

提前感谢!

根据我的经验,当您再次回发时重新绑定ListView时,就会发生这种情况。为了防止它,我们通常将绑定放置在内部!IsPostback

例如,

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ListBox1.DataSource = new List<ListItem>()
        {
            new ListItem("One", "1"),
            new ListItem("Two", "2"),
            new ListItem("Three", "3")
        };
        ListBox1.DataBind();
    }
}

当我有:

<asp:ListBox ID="ListBox1" runat="server" Height="140px" Width="290px" Font-Size="22px" autopostback="true" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged">
<asp:ListItem>Item 1</asp:ListItem>
<asp:ListItem>Item 2</asp:ListItem>
<asp:ListItem>Item 3</asp:ListItem>
<asp:ListItem>Item 4</asp:ListItem>
<asp:ListItem>Item 5</asp:ListItem>
<asp:ListItem>Item 6</asp:ListItem>
</asp:ListBox>
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

和:

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ListBox1.SelectedIndex == -1)
        TextBox1.Text = "-1";
    else
        TextBox1.Text = ListBox1.SelectedItem.Text;
}

我没有得到ListBox1.SelectedIndex=-1。

最新更新