2013-05-10 2 views
1

Возможно ли, используя asp.net и vb.net в качестве кода, обновить UpdatePanel в прошедшем System.Timers.Timer событии? Я знаю, что имеется таймер, но, пожалуйста, помогите мне сделать это с помощью System.Timer.Timer - у меня есть причина использовать его таким образом.Обновить UpdatePanel из кода позади прошедшего события System.timers.timer

Каждый раз, когда вызывается подпрограмма, которая обрабатывает прошедшее событие моего таймера, у меня есть букваль, текст которого я обновляю. После того, как я обновляю текст, я вызываю update() в моей UpdatePanel. Ничего не произошло. Я знаю, что есть способы сделать это с Javascript на стороне клиента, но если это вообще возможно, я хочу держаться подальше от этого и оставаться на стороне сервера, что, по моему мнению, является тем, что Ajax UpdatePanel пытается сделать для меня в любом случае. Я чувствую, что UpdatePanel должен делать именно то, что мне нужно, обновляя только небольшую часть моей страницы, в этом случае, когда хранится мой литерал. Огромное спасибо заранее.

Вот часть моей разметки:

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
    <ContentTemplate> 
     <asp:Literal ID="timerLit" runat="server" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

А вот мой В.Б:

Protected Sub onTimerElapsed(source As Object, e As ElapsedEventArgs) 
    timerLit.Text = "Hello" 
    UpdatePanel1.update() 
End Sub 

Я пробовал много вещей. Я знаю, что моя подпрограмма onTimerElapsed вызывается, и я знаю, что литерал заполняется правильным текстом. Обновление() просто ничего не делает. Еще раз спасибо!

ответ

1

UpdatePanel работает только от клиента к серверу. Сценарий, который вы описываете, невозможен (по крайней мере, не с использованием тех методов, которые вы используете). Это связано с тем, что сервер не может подключиться к клиенту.

Есть две возможности:

  • Либо сделать это от клиента к серверу (который вы отбрасываются)
  • использовать структуру как SignalR, если вы действительно хотите, чтобы толкать его от серверной стороне.

SignalR реализует для вас клиентскую и серверную сантехнику и использует наилучшую технику, доступную в текущем браузере.

Здесь вы можете найти более подробную информацию о SignalR: http://signalr.net/

+0

Спасибо за ответ, это очищает вещи. Теперь, как именно я могу перейти от клиента к серверу и по-прежнему использовать подпрограмму прошедшего события из моего System.Timers.Timer? Это возможно? – lastmjs

+0

Нет, вам нужно будет сделать это на клиенте с JavaScript – Kenneth

0

Вместо того, чтобы пытаться перейти на сервер -> Клиент перейдите из Client -> Server.

Так что в javascript создайте таймер, который будет вызывать ваш код за каждые XXX секунд.

Нечто подобное.

var myTimer = setInterval(myMethod, 5000); 

function myMethod() 
{ 
    //this will repeat every 5 seconds 
    //you can reset counter here 
} 

вы можете очистить таймер и остановить его вызова метода по телефону

clearInterval(myTimer); 
Смежные вопросы