asp.net dropDownBox selectedIndex不被维护

时间:2020-03-05 18:56:15  来源:igfitidea点击:

我有一个奇怪的问题,因为dropdownbox selectedIndex总是在回发后设置为0。我不是偶然在我的代码中重新绑定它。实际上,我已经在page_load事件的第一行放置了一个断点,并且该值已经设置为零。下拉列表位于项目的主页中,我不知道这是否有所不同。我没有在我的内容持有者中引用该控件。

如果我将autoPostBack设置为'true',则页面工作正常。我不必更改任何代码,并保持selectedIndex。我也尝试过启用和禁用enableViewState,这没有什么区别。在这一点上,我正在抓紧稻草来弄清楚发生了什么。我从来没有遇到过这个问题。

这是我的page_load事件中的代码。

If CartEstablished Then
            txtCustNum.Visible = False
            btnCustSearch.Visible = False
            lblCustNum.Visible = True
            ddlSalesType.Visible = False
            lblSalesType.Visible = True
            ddlTerms.Visible = False
            lblTerms.Visible = True

            lblTerms.Text = TermsDescription
        Else
            txtCustNum.Visible = True
            btnCustSearch.Visible = True
            lblCustNum.Visible = False

            lblSalesType.Visible = False
            ddlSalesType.Visible = True
            lblTerms.Visible = False
            ddlTerms.Visible = True
        End If

        If Page.IsPostBack Then
             GetUIValues()
        Else

             LoadTermCodes()
        End If

我在LoadTermCodes绑定了导致我出现问题的下拉列表。

解决方案

回答

我们确定要执行回发而不是刷新吗?如果没有更多有关问题或者代码段的上下文,很难。

回答

这可能是错误的树,但是过去发生的几件事使我难以忍受,这让我挠了挠头:

  • 给输入元素命名一个重复/保留的单词(例如"名称","方法","重置"等)
  • 表单元素实际上不在提交的表单之外

我发现,当所有逻辑调试都没有结果时,我自己的笨拙有时会造成诸如此类的浪费时间的"神秘"错误。

回答

我们在页面生命周期的哪个阶段绑定下拉列表?如果我们要在page_init中进行绑定,则它应该可以工作;如果我们要在page_load中进行绑定,请确保在绑定命令周围包装!IsPostBack。

如果我们发布有问题的代码,则更容易进行故障排除。

回答

这可能只是语法错误,但不应

If Page.IsPostBack Then
             GetUIValues()
        Else

看起来像这样

If  NOT Page.IsPostBack Then
         GetUIValues()
    Else

回答

我发现了同样的问题...以我为例,在另一个dropdownlist onchange客户端事件之后,javascript函数填充了dropdownlist。在PageLoad上,第二个下拉列表丢失了所有项目,因此其selectedIndex变为0。有什么方法可以防止这种情况?