Диалоговое окно подтверждения JavaScript - ASP.NET - PullRequest
1 голос
/ 08 февраля 2009

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

У меня есть веб-сайт 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 ]

3 голосов
/ 08 февраля 2009

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

2 голосов
/ 08 февраля 2009

Чтобы ответить на ваш вопрос «Как вызвать функцию js после того, как я присвоил текст элементу управления?». Вы можете просто добавить вызов 'RegisterClientScriptBlock' внутри события нажатия кнопки, чтобы вывести 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){...}
}
0 голосов
/ 08 февраля 2009

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

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

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

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

...