如何在一定时间后隐藏自定义控件

时间:2012-07-02 14:23:38

标签: asp.net .net custom-controls

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

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

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

修改

有些答案建议在自定义控件的末尾添加以下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

4 个答案:

答案 0 :(得分:0)

你可以在对象上有一个属性,如果你在规定的时间范围之外,在执行时将visible属性改为false,所以你有一个可见的from和until字段,并且当它与之比较时产生一个布尔值现在的时间。

答案 1 :(得分:0)

您可以使用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>

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

</script>