Listbox SelectedIndex始终返回-1

时间:2016-04-14 19:36:55

标签: c# asp.net

我有一个问题,当我尝试从代码隐藏中的asp:listbox中获取selectedindex时,它总是保持-1,甚至在页面上被选中它。我每分钟都在全面更新这份清单。对于加载listItems,整个列表将被删除并再次写回。

代码示例:

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

在codebehind中:

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

尝试使用if(!isPostBack)..但索引保持-1并且它只删除了列表中的项目。

提前致谢!

2 个答案:

答案 0 :(得分:2)

根据我的经验,当您再次在回发时重新绑定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();
    }
}

答案 1 :(得分:0)

当我有:

<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。