2009-07-08 4 views
1

Я сейчас экспериментирую с некоторыми AJAX. У меня есть настраиваемый элемент управления, который появляется на моей главной странице, в которой есть панель обновления и таймер. Таймер срабатывает и панель обновляется, и все денди. Кроме того, что есть некоторые операции, которые я не хочу, чтобы они выполнялись при каждом обновлении. Кажется, что весь жизненный цикл страницы происходит с каждым обновлением. Есть переменные, которые я хочу установить, и сохраняю их значение при обновлении. Есть ли способ заставить его выполнять ТОЛЬКО то, что в вызове timer_tick?C# updatepanel с таймером page_load

+0

Что код timer_tick делать? –

ответ

0

UpdatePanels всегда заставляют всю страницу обновляться. Если вы хотите обрабатывать только определенную часть страницы (и это фиксированный размер), вы можете попробовать использовать iframe.

В качестве альтернативы, если вы хотите сохранить переменные, которые вы можете поместить их в ViewState или SessionState таким образом, чтобы они сохранялись между постбэков

2

Вы могли бы взглянуть на запрос [ «__ EventTarget»] в случае загрузки страницы чтобы увидеть, какой контроль вызвал обратную передачу. Если это таймер, выпрыгните из функции.

Предполагая, что таймер называется «refreshtimer»:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Request["__EVENTTARGET"] == "refreshtimer") 
    { 
     return; 
    } 
    // etc 
2

Не уверен, что какая AJAX.Net пост обратно выглядит как, но я обычно предохранить другие элементы управления и содержимое, проверяя на пост обратно;

protected void Page_Load(object sender, EventArgs e) 
{ 

    // if its a post back then my controls should already be setup... 
    if (!Page.IsPostBack) 
    { 
      InitControlData(); 
    }  
} 

, а затем он должен упасть до вашего управления событиями?

protected void timer_tick(object sender, EventArgs e) 
{ 
    // Do my Ajaxy work~ 
} 
0

Это невозможно с UpdatePanels ... вся страница будет проходить весь жизненный цикл. Как уже упоминалось, вы можете ограничить обработку, которая происходит с использованием IsInSyncPostBack IsPostBack или ScriptManager, но в конечном итоге это не будет отличным решением для сложных страниц.

Однако вы можете использовать страницу Методы, чтобы выполнить только один статический метод на вашей странице, но вам нужно будет самостоятельно вызвать Javascript и обновить интерфейс. Вот некоторые примеры:

Смежные вопросы