Description des problèmes:Impossible de déclencher la méthode JavaScript à partir du code-behind en utilisant Update Panel
Après avoir enregistré les données dans DB, je dois montrer une alerte à l'utilisateur. Pour cela, j'ai enregistré le script du code-behind. Mais il est ne fonctionne pas avec le panneau de mise à jour alors qu'il fonctionne comme prévu sans panneau de mise à jour. Je dois le faire fonctionner avec le panneau de mise à jour.
J'ai essayé en ajoutant $(document).ready(function()
lors de l'enregistrement du script, mais cela n'a pas fonctionné.
Ensuite, j'ai essayé avec la méthode ScriptManager.RegisterClientScriptBlock()
au lieu de Page.ClientScript.RegisterStartupScript()
, mais cela ne fonctionnait pas non plus.
Voici l'extrait de code de la page Web (ASPX):
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Button ID="btnOutsideUpdatePanel" runat="server" Text="Outside UpdatePanel" OnClick="btnOutsideUpdatePanel_Click" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="btnInsideUpdatePanel" runat="server" Text="Inside UpdatePanel" OnClick="btnInsideUpdatePanel_Click" />
</ContentTemplate>
</asp:UpdatePanel>
<uc1:Child runat="server" id="Child1" />
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<uc1:Child runat="server" id="Child2" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
Voici l'extrait de code d'utilisateur contrôle (ASCX):
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Child.ascx.cs" Inherits="UpdatePanelAndScript.Child" %>
<asp:Button ID="btnUserControl" runat="server" Text="User Control" OnClick="btnUserControl_Click" />
code-behind de page web :
protected void btnOutsideUpdatePanel_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowSuccess", "alert('Hi');", true);
}
protected void btnInsideUpdatePanel_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowSuccess", "alert('Hi');", true);
}
code-behind de l'utilisateur contrôle:
protected void btnUserControl_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowSuccess", "alert('Hi');", true);
}
Oui, cela a fonctionné dans l'extrait de code ci-dessus. Merci Mais, après avoir intégré dans le code de la base réelle, il ne fonctionne pas comme prévu (Il travaille en partie) .. Problème Description: J'ai un contrôle de fichiers AJAX Uploader l'intérieur du panneau de mise à jour. Cas 1: Lorsque j'ajoute la propriété update-panel "updateMode = 'conditionnel" ", la fenêtre contextuelle fonctionne comme prévu. Mais le contrôle qui est conservé en dehors du panneau de mise à jour n'est pas rendu après la publication partielle. Cas 2: Et je supprime la propriété du panneau de mise à jour "updateMode = 'conditionnel" ", la fenêtre ne fonctionne pas du tout , c'est-à-dire que le script ne s'enregistre pas dans le DOM. –
_ "Mais le contrôle qui reste en dehors du panneau de mise à jour n'est pas rendu après la publication partielle" _. Votre contrôle est généré dynamiquement? Pouvez-vous fournir le code requis pour reproduire votre problème? – krlzlx