我有一个列表框控件:
<asp:ListBox runat="server" id="lbox" autoPostBack="true" />
后面的代码类似于:
private void Page_Load(object sender, System.EventArgs e)
{
lbox.SelectedIndexChanged+=new EventHandler(lbox_SelectedIndexChanged);
if(!Page.IsPostBack)
{
LoadData();
}
}
private LoadData()
{
lbox.DataSource = foo();
lbox.DataBind();
}
protected void lboxScorecard_SelectedIndexChanged(object sender, EventArgs e)
{
int index = (sender as ListBox).selectedIndex;
}
我的问题是,当我的页面收到回传时(当用户在列表框中进行选择时),选择总是“跳转”到列表框中的第一项,因此我的回调函数中的索引变量始终为 0。
看起来这可能是一个视图状态问题?如何修复它以使选择索引通过回发保持不变?
没有 ajax,这是 .NET 1.0。
谢谢。
编辑 1 JohnIdol 让我更近了一步,如果我将数据源从原来的 DataTable 切换到 ArrayList,那么一切正常......会导致这种情况吗?
编辑 2事实证明,我的 DataTable 有多个相同的值,因此索引被视为与具有相同值的所有项目相同......感谢那些帮助的人!