ASP.NET/AJAX - Web panel de control de usuario de actualización de disparo desde fuera
-
03-10-2019 - |
Pregunta
Tengo un control de usuario web con un UpdatePanel. En mi MainPage llegué al igual que 3 de esos controles. Ahora quiero tener un temporizador en el MainPage lo que desencadenaría los UpdatePanels en los controles de usuario Web.
¿Cómo puedo manejar esto?
Gracias de antemano.
Solución
Uso del control Timer AJAX como un UpdatePanel disparador
Implementar una actualización de funciones en su control de usuario que llama a la actualización de funciones de sus Actualizar-Panels y lo llaman desde el MainPage en la fracción del temporizador-Evento para cada control. Ajuste el UpdateMode de UpdatePanels = de sus UserControls condicional.
Por ejemplo, en su Codebehind de control de usuario:
Public Sub Update()
'bind Data to your UpdatePanel's content f.e.:
Me.Label1.Text = Date.Now.ToLongTimeString
Me.UpdatePanel1.Update()
End Sub
Y en su MainPage:
Private myControls As New List(Of WebUserControl1)
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
For i As Int32 = 1 To 10
Dim newControl As WebUserControl1= DirectCast(LoadControl("./WebUserControl1.ascx"), WebUserControl1)
myControls.Add(newControl)
MainPanel.Controls.Add(newControl)
Next
End Sub
Protected Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'in this example added dynamically
For Each ctrl As WebUserControl1 In Me.myControls
ctrl.Update()
Next
End Sub
En ascx-archivo del control de usuario:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
En aspx-archivo del MainPage:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel ID="MainPanel" runat="server">
<asp:Timer ID="Timer1" runat="server" Interval="1000"></asp:Timer>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>