我在同一主题上看到了几个类似的问题,但没有一个问题涉及我的问题。
我有一个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
答案 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回调中设置了计时器,而不是在文档加载时。