【问题标题】:Visible Property of ASP.Net Control not workingASP.Net 控件的可见属性不起作用
【发布时间】:2012-03-10 18:34:02
【问题描述】:

我的页面中有一个单选按钮列表和三个占位符,其中单选按钮列表、第一个和第三个占位符在更新面板中,第二个占位符不在更新面板中。

当单选按钮列表 selectionindex 更改时,我希望所有三个占位符都不可见。 Placeholder2.visible=false 代码执行,但 Placeholder2 仍然可见。

如何解决这个问题。

谢谢, 维克内什.A

【问题讨论】:

  • UpdatePanel 内的 PostBack 将导致任何服务器端更改仅应用于该 UpdatePanel 内的控件。这是设计行为。

标签: asp.net


【解决方案1】:

您应该通过设置AutoPostBack="true" 将所有占位符放在更新面板中以在单选按钮点击(完整回发)时重新加载页面

您应该了解,默认情况下,客户端上的更改单选按钮只会影响客户端 html,因此您需要将该信息传递给服务器。

另一种选择是让客户端单击单选按钮并编写您的自定义 JavaScript 函数来隐藏您的第二个占位符,但不要忘记在回发(无论是否为 ajax)将发生时在服务器上管理这种情况。

【讨论】:

  • 我不能将所有占位符都放在更新面板中,因为我的占位符 (Placeholder2) 之一具有文件上传控制,我不想将其放置在更新面板中。
  • 所以我的第二个建议是为客户端的第二个占位符包装切换显示 css 属性,并确保在回发发生时它会在服务器端进行处理。
  • 我的 Javascript:function Plchold_invisible() { document.getElementById('Placeholder2').style.display = 'none'; }
  • 是的,但是如果名称是自动生成的,最好使用类似 document.getElementById('')
  • 但是Javascript函数在被调用时没有触发。
【解决方案2】:

在 UpdatePanel 内移动 Placeholder2。

或者根本不使用 UpdatePanel。

或者使用 JavaScript 来隐藏它,而不是使用服务器端代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 2011-11-15
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 2013-10-16
    相关资源
    最近更新 更多