Javascript确认对话框 - ASP.NET

时间:2009-02-07 22:47:12

标签: c# asp.net javascript .net-2.0 javascript-events

我在同一主题上看到了几个类似的问题,但没有一个问题涉及我的问题。

我有一个asp.net网站,并希望在数据库更新后向用户显示状态消息(asp:标签将在5秒内消失)。

我想将文本分配给标签,然后使用javascript隐藏它。

我将js部分整理出来,唯一的问题是在我将文本分配给控件之后如何调用js函数?

假设我正在使用以下代码更新数据库中的内容:

<asp:Button ID="btnUploadFiles" runat="server" OnClick="buttonSubmit_Click" Text="Update"  />

背后的代码

protected void buttonSubmit_Click(object sender, EventArgs e)
    { try{// update the database  
          // change label text to tell the user update succeeded}
      catch(Exception ex){...}
    }

请帮忙!

更新:请不要jquery,只需简单的javascript

3 个答案:

答案 0 :(得分:3)

我个人使用jQuery来做这件事,但是如果你想使用普通的旧JavaScript,那么像这样的东西可能就是这样:

<script type="text/javascript">
function hideLabel()
{
    // replace yourLabelID with <%=YourLabelID.ClientID%> if it's a .NET Label control
    document.getElementById('yourLabelID').style.display = 'none';
}
setTimeout('hideLabel()', 5000);
</script>

如有必要,您还可以将脚本块嵌入Literal控件中,只有在更新标签文本时才能显示。

答案 1 :(得分:2)

回答你的问题“我将文本分配给控件后如何调用js函数?”。您可以在按钮单击事件中添加对“RegisterClientScriptBlock”的调用,以输出Luke提供的JavaScript。

protected void buttonSubmit_Click(object sender, EventArgs e)
{ 
    try
    {
       // update the database  
       // change label text to tell the user update succeeded
       label.Text = "Message";
       string js = "function hideLabel(){document.getElementById('" + label.ClientID + "').style.display = 'none'};setTimeout(hideLabel, 5000);"
       ClientScript.RegisterClientScriptBlock(this.GetType(), "test", js ,true);
    }
    catch(Exception ex){...}
}

答案 2 :(得分:0)

您是通过Ajax发回还是正常回发?如果它是正常的回发,只需在设置定时器的页面上注册一些javascript,并在定时器到期后调用隐藏标签的函数。以下示例使用jQuery确保在启动计时器之前加载DOM,但还有其他方法。它将在5s过后隐藏标签。

function hideLabel(label)
{
   $(label).hide();
}

$(document).ready( function() {
    var label = $('#labelID');
    setTimer(function() { hideLabel(label); ),5000);
});

如果你使用的是AJAX,那么这个想法基本相同,只不过你在AJAX调用的onSuccess回调中设置了计时器,而不是在文档加载时。