【问题标题】:How to hide custom control after certain time如何在一定时间后隐藏自定义控件
【发布时间】:2012-07-02 14:23:37
【问题描述】:

我有一个显示某些操作结果的自定义控件。

默认情况下它是隐藏的,并且在其他类的代码隐藏中可见。

现在我想在一段时间后隐藏它。我该怎么做?

编辑:

一些答案​​建议在自定义控件末尾添加以下 javascript 块,如果在自定义控件上使用 Visible="false",则该块不起作用。

但我没有说得足够清楚,因此接受了它作为答案。
不得不看:How to call javascript function from code-behind

如果使用Visible="true",则正确调用超时函数。

ASPX:

<control id="customControl" runat="server" Visible="false"/>

标记中使用Visible="true"时的解决方法:

自定义控件 - ASPX:

<div id="body">
    <!-- custom control -->
</div>
<script type="text/javascript">     
    window.setTimeout(function() { document.getElementById('<%=Me.divBody.ClientID%>').style.display = 'none'; }, 2000);
</script>

自定义控件 - 代码隐藏:

Me.customControl.Visible = True

在标记中使用Visible="false" 时的解决方案:
从一开始脚本块不会呈现,以后不会自动添加。所以我们需要注册它。

自定义控件 - ASPX:

<div id="divBody">
    <!-- custom control -->
</div>
<script type="text/javascript">     
    window.setTimeout(function(){ alert("test"); });         
</script>

自定义控件 - 代码隐藏:

Me.customControl.Visible = True
Dim hideScript AS String = "window.setTimeout(function() { document.getElementById('" & Me.divBody.ClientID & "').style.display = 'none'; }, 2000);"
ScriptManager.RegisterClientScriptBlock(Me.Page, Me.GetType, "script", hideScript, True)

来源:http://www.codeproject.com/Tips/85960/ASP-NET-Hide-Controls-after-number-of-seconds

【问题讨论】:

    标签: asp.net .net custom-controls


    【解决方案1】:

    我没有在问题中看到任何对 jQuery 的引用,因此 vanilla JS 解决方案: 把它放在用户控制文件的末尾

    <script type="text/javascript">
        setTimeout(function(){
             document.getElementById("<%=this.ClientID%>").style.display = "none";
            }, 5000);
    
    </script>
    

    【讨论】:

    • 这不起作用,即使是简单的警报也不会被触发。该元素明确地在代码隐藏中可见。
    • 确保页面加载和检查没有javascript错误
    • 我编辑了我的问题。问题是,如果默认情况下将可见设置为 false,则不调用 javascript。如果设置为 true,则元素从一开始就可见,并调用 javascript 超时函数。
    • 可以在分配 setTimeout 处理程序之前添加检查。在任何一种情况下,上述解决方案都应该有效。您面临的问题是什么?
    • 我现在用您的代码建议和一个简单的警报示例重新编辑了我的问题,如果在自定义控件上使用Visible="false",则该示例不起作用。
    【解决方案2】:

    您可以在对象上拥有一个属性,如果您在规定的时间范围之外,当执行该属性时将可见属性更改为 false,因此您将有一个可见的 from 和 until 字段,并在比较时生成一个布尔值当前时间。

    【讨论】:

      【解决方案3】:

      您可能可以使用 javascript setTimeout 函数来执行一些代码来隐藏具有用户控件在一段时间后隐藏的 div

      <div id="divUserControlContainer">
       //put your user control embed code here
      </div>
      
      <script type="text/javascript">
      $(function(){
      
          window.setTimeout(function() {  
               $("#divUserControlContainer").hide();
          }, 2000);
      
      });
      </script>
      

      【讨论】:

        【解决方案4】:

        您可以通过简单的 JQuery 方法来实现它:

        $("#CustomControl").hide(1000);
        $("#CustomControl").show();
        

        【讨论】:

          猜你喜欢
          • 2011-12-31
          • 1970-01-01
          • 2021-06-04
          • 1970-01-01
          • 2012-07-28
          • 1970-01-01
          • 1970-01-01
          • 2011-01-14
          • 1970-01-01
          相关资源
          最近更新 更多