Fermeture RadWindow en invoquant javascript à partir du serveur
J'ai une commande qui ressemble à ceci:
<telerik:RadCodeBlock runat="server">
<script type="text/javascript">
function refresh() {
window.$find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("RebindRecommendations");
}
</script>
</telerik:RadCodeBlock>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="AjaxRequest">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="NameOfGrid" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadWindowManager ID="RadWindowManager1" runat="server">
<Windows>
<telerik:RadWindow ID="RadWindow1" runat="server" NavigateUrl="UrlOfPage" OnClientClose="refresh"></telerik:RadWindow>
</Windows>
</telerik:RadWindowManager>
Page:
<script type="text/javascript">
function closeWindow() {
self.close();
return false;
}
</script>
<!-- form fields here -->
<telerik:RadButton runat="server" ID="_cancel" Text="Cancel" OnClientClick="closeWindow"></telerik:RadButton>
<telerik:RadButton runat="server" ID="_submit" Text="Submit" OnClientClick="closeWindow" OnClick="DoSomeDataBaseStuff"></telerik:RadButton>
Cela fonctionne comme prévu. Mon RadWindow est supprimé et mon contrôle de grille actualise au moment de frapper, soit l'annuler ou de boutons de soumission. Le problème est que la base de données n'a pas fini de faire son travail en ce moment pour que la grille d'actualisation ne révèle pas les changements. J'ai essayé de changer ma mise en œuvre de page ressemble à ceci:
Page:
<script type="text/javascript">
function closeWindow() {
self.close();
return false;
}
</script>
<!-- form fields here -->
<telerik:RadButton runat="server" ID="_cancel" Text="Cancel" OnClick="CallJavaScriptToKillWindow"></telerik:RadButton>
<telerik:RadButton runat="server" ID="_submit" Text="Submit" OnClick="DoSomeDataBaseStuffAndThenCallJavaScriptToKillWindow"></telerik:RadButton>
Code Derrière appelle éventuellement après travail de base de données complète:
ClientScript.RegisterStartupScript(GetType(), "Key", "closeWindow();", true);
J'ai touché mon point d'arrêt dans le closeWindow fonction, mais il n'a pas le même comportement (la fenêtre ne fait pas les fermer). J'ai essayé différentes versions comme:
ClientScript.RegisterStartupScript(GetType(), "Key", "$(document).ready(function() {return closeWindow();});", true);
en vain. Ce qui me manque?
OriginalL'auteur kmkemp | 2011-10-13
Vous devez vous connecter pour publier un commentaire.
Ce qui est "moi"? N'avez-vous pas dire "ceci"?
Sont que vous essayez de fermer le RadWindow à partir de l'intérieur de la fenêtre ou de la page qui lance la fenêtre?
De l'intérieur d'une fenêtre, j'ai l'habitude de le faire:
Aussi, j'utiliserais ScriptManager.RegisterStartupScript plutôt que ClientScript.
OriginalL'auteur chrisdrobison
Je suis assez sûr que j'ai rencontré ce problème avant, et je pense que c'fixe:
Si cela ne fonctionne pas, essayez ceci:
Vous pouvez aussi le faire de cette façon, si vous préférez:
OriginalL'auteur James Johnson
Je ne suis pas sûr si je suis à l'amélioration de cette réponse, je suis juste en train de le rendre plus facile à comprendre. J'ai un rad fenêtre qui est ouverte à partir d'une page principale. Le radwindow est ouvert dans le Code Behind (C#), pas de Javascript. Lorsque mon utilisateur clique sur un bouton "Enregistrer" sur la RadWindow, elle effectue certaines tâches de logique, puis il ferme la radwindow lui-même. Vous avez simplement besoin de:
Mettre ce bloc de code dans vous RadWindow aspx.....
Mettez ce code dans votre RadWindow du clic sur le bouton après avoir effectué votre pré-proche de la logique (le même bouton qui effectue l'autre logique de fermer la fenêtre)
C#
ClientScript.RegisterStartupScript(typeof(string), "", "CloseDialog();");
OU
VB
ClientScript.RegisterStartupScript(Me.GetType(), "", "CloseDialog();")
Si vous vous demandez comment ouvrir le radwindow de code-behind voici comment j'ai fait:
...ET bien sûr, vous avez besoin d'une base RadWindowManager sur la page principale qui ouvre la fenêtre:
Cela devrait fonctionner, si j'ai fait une erreur merci de me corriger.
Grâce
OriginalL'auteur Acadia