Вопрос

Я видел пару похожих вопросов на ту же тему, но ни один из них не касался моей проблемы.

У меня есть 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

Это было полезно?

Решение

Чтобы ответить на ваш вопрос "Как мне вызвать функцию js после того, как я присвоил текст элементу управления?".Вы можете просто добавить вызов 'RegisterClientScriptBlock' внутри вашего события нажатия кнопки, чтобы вывести JavaScript, предоставленный Luke.

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){...}
}

Другие советы

Я бы лично использовал jQuery - 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 контролируйте и делайте его видимым только при обновлении текста вашей метки.

Вы отправляете ответ через Ajax или обычную обратную отправку?Если это обычная обратная передача, просто зарегистрируйте некоторый javascript на странице, которая устанавливает таймер и вызывает вашу функцию, которая скрывает метку по истечении таймера.В следующем примере используется jQuery, чтобы убедиться, что DOM загружен до запуска таймера, но есть и другие способы.Это скроет метку по истечении 5 секунд.

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

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

Идея в основном та же, что и при использовании AJAX, за исключением того, что вы устанавливаете таймер в обратном вызове onSuccess для вызова AJAX, а не при загрузке документа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top