【发布时间】:2008-12-03 19:49:06
【问题描述】:
我有一个列表框控件:
<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。
谢谢。
EDIT 1 JohnIdol 让我更近了一步,如果我将数据源从原来的 DataTable 切换到 ArrayList,那么一切正常...什么会导致这种情况?
编辑 2 原来我的 DataTable 有多个相同的值,因此索引被视为与具有相同值的所有项目相同...感谢帮助的人!
【问题讨论】:
-
.NET 2.0 上完全相同的东西对我来说很好
-
很高兴看到您的问题得到解决