【问题标题】:asp.net dropDownBox selectedIndex not being maintainedasp.net dropDownBox selectedIndex 未维护
【发布时间】:2008-11-05 18:21:32
【问题描述】:

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

如果我设置我的 autoPostBack = 'true' 页面可以正常工作。我不必更改任何代码,并且 selectedIndex 会被维护。我也尝试过设置 enableViewState on 和 off 并没有什么不同。在这一点上,我正在抓住稻草来弄清楚发生了什么。我以前从来没有遇到过这个问题。

这是我的 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 是我绑定导致我出现问题的下拉列表的位置。

【问题讨论】:

    标签: asp.net .net-2.0


    【解决方案1】:

    您确定要回发而不是刷新吗?如果没有更多关于问题或代码块的上下文,很难为您提供帮助。

    【讨论】:

    • 同上:当这种情况发生在我身上时,要么是 1)缺少 Page.IsPostBack 检查,要么是 2)我刷新而不是使用 PostBack
    【解决方案2】:

    这可能是找错了树,但过去让我抓狂的几件事让我摸不着头脑:

    • 将输入元素命名为重复/保留字词(考虑“名称”、“方法”、“重置”等)
    • 将表单元素物理地置于提交的表单之外

    我发现当所有的逻辑调试都没有结果时,我自己的愚蠢有时会造成像这样浪费时间的“神秘”错误。

    【讨论】:

    • 导致问题的控件的名称是 ddlTerms
    【解决方案3】:

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

    如果您发布有问题的代码,排除故障会更容易。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

         If Page.IsPostBack Then
                     GetUIValues()
                Else
        

        看起来像这样

          If  NOT Page.IsPostBack Then
                 GetUIValues()
            Else
        

        【讨论】:

        • 你可以用其他方式来做。当页面被回发时我想做一些事情,如果页面没有被回发,我想做其他事情。
        • 那我想说问题可能出在这两个函数之一,但是不知道它们是做什么的就很难说。
        猜你喜欢
        • 2013-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-01
        • 1970-01-01
        相关资源
        最近更新 更多