【问题标题】:Client side javaScript to toggle dropdownlists effects reversed on the 2nd postback客户端 javaScript 在第二次回发时切换下拉列表效果
【发布时间】:2009-12-31 21:03:45
【问题描述】:

我有一些 JavaScript 来切换 ASP.NET 页面中的下拉列表,当我单击按钮时会调用该下拉列表。我有 4-5 个下拉列表/切换按钮对。每个切换按钮都会切换相关下拉列表上的启用/禁用属性。

我保存了一个隐藏字段的 disabled 属性值来跟踪回发之间按钮的禁用状态,使用以下 javascript

function disableButton(dropdownID)
{
    var element = document.getElementById(dropdownID); // get the DOM element
    var trackingField = document.getElementById("_tracking" + dropdownID);
    if (element) { 
        trackingField.value = element.disabled; 
//sending the element.disabled instead of "!element.disabled" since we are
//setting dropdownlist.enabled property so is already negated for us
        element.disabled = !element.disabled; // invert the boolean attribute
    }
    return false; // prevent default action
}

HTML

    <input type="hidden" name="_trackingdropdownlist" id="_trackingdropdownlist" value="true" />

代码

 if (Request.Params[_trackingdropdownlist] != null)
            {
              bool val = true;
              bool.TryParse(Request.Params[_trackingdropdownlist], out val);
              dropdownlist.Enabled = val;

            }

所以下拉列表的状态在第一次回发往返时保持不变,但之后所有下拉列表都被启用。这里出了什么问题?

*注意:这些下拉列表中的默认启用属性值为 false。

【问题讨论】:

    标签: javascript asp.net postback


    【解决方案1】:

    您的隐藏元素不是服务器元素,它们的值在回发时会丢失。当页面重新加载时,隐藏的元素会按照您指定的值“true”重新创建。当您在第二次回发时检查请求值时,所有在第一次和第二次回发之间未修改的隐藏元素都将包含 true。

    使它们成为服务器元素,以便您所做的任何更改都保留在视图状态中。

    【讨论】:

      【解决方案2】:

      此外,为了帮助跟踪每次回发时发送到服务器的内容,您可以使用 FiddlerTool 之类的工具来跟踪 http 请求。您将能够查看您的视图状态和隐藏表单字段状态是否在请求之间丢失。

      另外,查看函数“disableButton”的代码,它看起来确实像切换按钮,而不是本身禁用它(给定 element.disabled = !element.disabled)。如果你真的想禁用按钮,你应该避免像“A = !A”这样的逻辑,它只会在每次执行语句时在状态之间切换。

      因此,如果接线不正确,那么 lincolnk 的回答将为您指明正确的方向,否则,我建议您查看您的函数是如何编写的,它只会在其他每个回发时禁用按钮。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 1970-01-01
        • 2012-12-04
        • 1970-01-01
        相关资源
        最近更新 更多