1

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

我有一个 asp.net 网站,并希望在数据库更新后向用户显示一条状态消息(asp:label 将在 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

4

3 回答 3

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控件中,并且仅在更新标签文本时使其可见。

于 2009-02-07T23:10:38.257 回答
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){...}
}
于 2009-02-08T03:07:42.897 回答
0

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

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

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

如果您使用 AJAX,这个想法基本上是相同的,除了您在 onSuccess 回调中为 AJAX 调用而不是在文档加载时设置计时器。

于 2009-02-07T22:58:33.367 回答