我有一个标签,我想要的是,将标签显示为" name1"然后等待5秒钟,然后将其更改为" name2"。这就是我做的那个
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "name1";
System.Threading.Thread.Sleep(5000);
Label1.Text = "name2";
}
它的作用是总共等待5秒钟然后显示" name2"。 " NAME1"没有像我希望的那样展示。我试过这些链接,
How do I get my C# program to sleep for 50 msec?
How to trigger a timer tick programmatically?
没有帮助。这个Using the ASP.NET Timer Control with Multiple UpdatePanel Controls似乎有用,但这会继续刷新页面。我不希望这种情况发生,它应该显示name1然后等待5秒,显示name2然后停止。
答案 0 :(得分:1)
您提到的更改必须在客户端,使用javascript setTimer方法并将标签更新为您需要的任何文本。
答案 1 :(得分:0)
您可以在UpdatePanel for Async功能下的页面中使用Timer控件(以下是ASP.net中AJAX的帮助提供的链接), 然后在其事件下使用此逻辑更改标签名称:
protected void Page_Load(object sender, EventArgs e)
{
Timer1.Enabled = true;
Timer1.Interval = 5000;
}
protected void Timer1_Tick(object sender, EventArgs e)
{
if(Label1.Text == "name2")
{
Label1.Text = "name1";
}
else
{
Label1.Text = "name2";
}
}
答案 2 :(得分:0)
您无法按照ASP.NET中的方式处理此问题,因为您始终会从form_load事件中获得最终结果。您必须使用JavaScript timing events在客户端处理此问题。
<script>
$(document).ready(function(){
$('#label').val('label1');
setTimeout(SetLabel2, 5000); //wait for 5 seconds before setting the label. NOTE: This will keep on repeating until you clear the timeout
});
function SetLabel2(){
var l = $('#label).val();
if(l == 'label2)
{
window.clearTimeOut(); //So that this does not repeat
}
</script>
答案 3 :(得分:0)
正如其他贡献者所建议的那样,您应该使用客户端代码来获取这种行为。在您的代码示例中,where parent_pk = @parent_pk or (@parent_pk IS NULL and parent_pk IS NULL)
函数只需要5秒钟即可执行,当服务器上的所有处理完成后,生成的HTML最终会被发送到浏览器......您会看到“name2”。
以下是客户端代码的jQuery版本:
Page_Load
这是一个纯粹的Javascript版本:
$(document).ready(function () {
$('#Label1').html("name1");
setTimeout(function () { $('#Label1').html("name2"); }, 5000);
})
如果标签的ID被ASP.NET破坏,您可以在客户端代码中使用var lbl1 = document.getElementById('Label1');
lbl1.innerHTML = "name1";
setTimeout(function () { lbl1.innerHTML = "name2" }, 5000);
而不是<%= Label1.ClientID %>
。
答案 4 :(得分:0)
这可以仅使用提供的内容完成,它应该运行一次,所以一旦勾选完成,我们就会禁用计时器。
protected void Page_Load(object sender, EventArgs e)
{
Timer1.Enabled = true;
Label1.Text = "name1";
Timer1.Interval = 2000;
}
protected void Timer1_Tick(object sender, EventArgs e)
{
Label1.Text = "name2";
Timer1.Enabled = false;
}