当前位置:  开发笔记 > 编程语言 > 正文

在回发期间,selectedIndex丢失了 - ASP.NET

如何解决《在回发期间,selectedIndex丢失了-ASP.NET》经验,为你挑选了1个好方法。

我有一个列表框控件:




背后的代码类似于:


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.

这似乎可能是一个viewstate问题?如何修复它以便选择索引保留在回发中?

没有ajax,这是.NET 1.0.

谢谢.

编辑1 JohnIdol让我更近了一步,如果我将数据源从我原来的DataTable切换到ArrayList,那么一切正常......会导致什么?

编辑2事实证明我的DataTable有多个相同的值,因此索引被视为具有相同值的所有项目相同...感谢那些帮助过的人!



1> davidfowl..:

这里真正的问题是事件的顺序.当您在page_load中进行数据绑定时,会覆盖已发布的数据,这就是为什么未在列表框中设置选择的原因.您可以通过将绑定逻辑移动到Page_Init来轻松克服此问题.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有