У меня была та же проблема, и я нашел эту тему, когда искал решение. Я нашел это, поэтому я опубликую это, чтобы помочь разработчикам, которые могли иметь ту же самую проблему.
Реализация интерфейса IPostBackEventHandler в вашем UserControl:
Public Class UserControl_Rattachement
Inherits System.Web.UI.UserControl
Implements ICallbackEventHandler, IPostBackEventHandler
В функции RaisePostBackEvent вызовите метод Update () вашей UpdatePanel:
Public Sub RaisePostBackEvent(eventArgument As String) Implements System.Web.UI.IPostBackEventHandler.RaisePostBackEvent
// Code executed during the PostBack
UpdatePanel1.Update()
End Sub
В методе Page_Load вашего UserControl определите PostBack как асинхронный:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(Me)
End Sub
Теперь добавьте клиентский скрипт в метод Render:
Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter)
MyBase.Render(writer)
Dim postbackReference As String = Page.ClientScript.GetPostBackEventReference(Me, Nothing, True)
Dim postbackScript As String = String.Format("function updateRattachement() {{ {0}; }}", postbackReference)
writer.WriteLine("<script type=""text/javascript"">")
writer.WriteLine(postbackScript)
writer.WriteLine("</script>")
End Sub
Затем вызовите функцию на стороне клиента, когда она вам понадобится:
updateRattachement();
PostBack будет асинхронным, и это обновит панель обновления, которую вы указали.
Надеюсь, это поможет, и извините за мой английский.