【问题标题】:Client side javaScript to toggle a dropdownlists effects reversed on postbacks?客户端 javaScript 在回发时切换下拉列表效果反转?
【发布时间】:2009-12-31 18:36:01
【问题描述】:

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

function toggleDisableDropDown(dropDownID) {
  var element = document.getElementById(dropDownID); // get the DOM element

  if (element) { // element found
    element.disabled = !element.disabled; // invert the boolean attribute
  }

  return false; // prevent default action
}

但我的下拉列表之一需要每次都进行回发。我选择一个项目来填充另一个下拉列表,我注意到在这个回发中,我所有其他被 javascript 禁用的下拉列表(用户点击这些下拉列表的切换按钮)都被启用。

这里发生了什么?我该如何解决?

【问题讨论】:

    标签: javascript asp.net postback


    【解决方案1】:

    Javascript DOM 操作与服务器上控件的保存状态无关。更改客户端下拉列表的启用属性将不会被服务器上的控件状态知道。

    回发使用控件的最后一个已知状态重新创建下拉列表。如果您想让它们使用客户端上的最后一个状态重新呈现,您还需要发布一些客户端跟踪信息。您可以在隐藏字段中跟踪每个下拉列表的客户端状态,并使用这些隐藏字段中的发布值来更新服务器上下拉列表的 Enabled 属性。

    //Html
    <input type="hidden" name="_trackingDropdown1" value="true" />
    

    //Client Javascript
    function toggleDisableDropDown(dropDownID) {
      var element = document.getElementById(dropDownID); // get the DOM element
      var trackingField = document.getElementById("_tracking" + dropDownID);
    
      if (element) { // element found
        element.disabled = !element.disabled; // invert the boolean attribute
        trackingField.value = element.disabled;
      }
    
      return false; // prevent default action
    }
    

    //On Server during postback handling
    if (Request.Params["_trackingDropDown1"] != null)
    {
        bool.TryParse(Request.Params["_trackingDropDown1"], out DropDownList1.Enabled);
    }
    

    【讨论】:

    • 我在 bool.TryParse(Request.Params["_trackingDropDown1"], out DropDownList1.Enabled) 上得到以下错误,属性或索引器不能作为 out 或 ref 参数传递
    • 哦,那就用一个临时变量吧。布尔结果; bool.TryParse(Request.Params["_trackingDropDown1"], 输出结果); DropDownList1.Enabled = 结果;
    猜你喜欢
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多