我有一个列表框控件:
<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。
Thanks.
EDIT 1JohnIdol 让我更近了一步,如果我将数据源从原来的 DataTable 切换到 ArrayList,那么一切都会正常工作......什么会导致这个?
Edit 2事实证明,我的 DataTable 有多个相同的值,因此索引被视为与具有相同值的所有项目相同......感谢那些提供帮助的人!
The real这里的问题是事件的顺序。当您在 page_load 中进行数据绑定时,您会覆盖发布的数据,这就是列表框中未设置选择的原因。您可以通过将绑定逻辑移至 Page_Init 轻松克服此问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)