У меня была такая же проблема. Две панели обновлений на одной странице, которые НЕ являются вложенными и имеют UpdateMode = "Conditional". Просто поймите, что когда одна панель обновлений на странице вызывает частичную обратную передачу, все панели обновлений будут вызывать событие обновления. Если у вас есть UpdatePanelAnimationExtender, подключенный к UpdatePanel A, и частичная обратная передача запускается для несвязанного UpdatePanel B, оба будут получать событие обновления, и анимация для UpdatePanel A будет запускать только часть OnUpdating, а не часть OnUpdated (такв основном анимация будет выполняться на полпути).
Вот как я исправил эту проблему: определите, какая панель обновления была запущена. Это можно узнать, получив значение переменной формы для менеджера скриптов. Соответствующая панель обновления будет упомянута в строке. Используйте эту информацию для выполнения действий, основанных на ваших потребностях.
// Variable to hold ScriptManager. Just slap this in the class for the page.
private ScriptManager scriptManager;
// Get the ScriptManager. Put this in Page_Init handler.
// If you have the ScriptManager on the same page, just refer to it directly.
// If you have it on the master page, you can get a reference to it like so.
// The second line shows one way you can get a reference to the ScriptManager from
// a user control.
// FYI, the same code applies to a ToolkitScriptManager.
scriptManager = ScriptManager.GetCurrent(this);
// scriptManager = ScriptManager.GetCurrent(HttpContext.Current.Handler as Page);
// This function checks whether an UpdatePanel is being updated
private Boolean IsUpdatePanelUpdating(String sUPID)
{
String sUpdateValue = Request.Form[Request.Form.AllKeys.Where(s => s.EndsWith(scriptManager.ClientID)).FirstOrDefault()] ?? String.Empty;
return sUpdateValue.Contains(sUPID);
}
// This is code you can put somewhere (say within OnLoad handler) to make an
// UpdatePanel A get updated even if an unrelated UpdatePanel B is currently being
// updated.
if (!IsUpdatePanelUpdating(upA.ClientID))
upA.Update();
Надеюсь, это кому-нибудь поможет.