我有一个问题,当我尝试从代码隐藏中的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并且它只删除了列表中的项目。
提前致谢!
答案 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。