ASP.NET Обновить страницу по таймеру; база данных запросов между таймером
"У меня есть решение в моей голове, но я не уверен, возможно ли это в ASP.NET. У меня нет большого опыта работы с таймерами. Моя идея заключается в следующем:
'Code Behind
'At the end of the timer(lets say 1 minute)
Dim qry = "SELECT ISNULL(Value, '') FROM Database.Schema.Table WHERE
Column = @Something"
'set up sql connection and execute query
Using sqlcon as new SQLConnection() 'Don't focus on this part
Using sqlcmd = New SQLCommand(sqlcon,qry) 'Don't focus on this part either syntax is probably incorrect
sqlcmd.Parameters.Add("Something", VarChar)
sqlcmd.Parameters("Something").Value = "Row Found"
'Refresh page; assign label control on .aspx page to value of returned query
'SafeToString() is a function that will safely return a string whether the value is some string, DBNULL, Nothing, or ''
lblString.Text = SafeToString(sqlcmd.ExecuteScalar())
End Using
End Using
Я хочу быть в состоянии сделать это, сохраняя при этом положение свитков. Поэтому я не перебиваю работу / просмотр, который делает пользователь.
Спасибо всем за ваш вклад!
2 ответа
Я никогда не использовал WebForms (о чем я предполагаю, что этот вопрос), но, несмотря на это, я думаю, что вы подходите к проблеме неправильно. Обновление страницы является деструктивным и отвлекающим, когда обновляется страница, браузер должен снова извлечь страницу (включая все ресурсы и сценарии) и заново отрендерить страницу.
Реализация на стороне клиента
Таким образом, решение должно быть реализовано на стороне клиента и не требовать полного обновления страницы, это может быть достигнуто с помощью Javascript
и ajax(из Википедии) запросы. Короче ajax
это механизм для выдачи дополнительных запросов веб-серверу, когда страница загружена и работает. Таким образом, вы можете получать новые данные в фоновом режиме, не прерывая работу пользователя.
Когда страница загружается, установите время ожидания или интервал:
let intervalId = setInterval(updateFromServer, 1000);
Этот интервал будет вызывать
updateFromServer
каждую 1 секунду (1000 мс).Определить функцию
updateFromServer
:function updateFromServer() { let newData = fetchData(); updateData(newData); }
Эта функция вызывается через установленный нами интервал и выполняет 2 действия: она выбирает новые данные с сервера и передает их в DOM, используя
updateData
,Вы можете использовать ajax (например, с jquery) для извлечения данных:
function fetchData() { return $.ajax({ type: "GET", url: remote_url, async: false }).responseText; }
Вот где приходит ajax, в приведенных выше строках используется jquery ajax api для отправки
GET
запрос к серверу по ссылкеremote_url
, Браузер отправляет запрос и ожидает ответа от сервера.И, наконец, обновите страницу (я снова использую jquery):
function updateData(newData) { $('#data-el').text(newData) }
Снова мы используем jquery здесь (вы можете использовать чистый javascript, хотя), чтобы найти элемент с идентификатором
data-el
и установив его содержимоеnewData
,
Уважать Page Methods
, JS может вызвать метод code-behind, который может вернуть значение методу js, который затем может обновить страницу. Метод с кодом не может получить прямой доступ к странице, а только возвращает значение методу js.