Fonction de JavaScript d'appel ASP.Net à partir de Code Behind

J'ai une fonction chargée de remplir un rapport SSRS. L'utilisateur appuie sur un bouton et je sors et vérifie s'il y a des données. Si aucune donnée, je fournis un message NO DATA. S'il y a des données, j'appelle le rapport SSRS que j'aimerais ouvrir dans une nouvelle fenêtre. Je pensais que l'utilisation d'une fonction JavaScript serait la meilleure façon d'y parvenir. Comment cela se fait-il ou que recommanderiez-vous? Merci d'avance!

<script type="text/javascript"> function openWindow(url) { document.forms[0].target = "_blank"; } </script> 

Essaye ça:

  System.Web.UI.ScriptManager.RegisterClientScriptBlock(Page, GetType(Page), "Script", "openWindow(url);", True) 

Veuillez envisager d'utiliser la méthode ClientScriptManager.RegisterClientScriptBlock . C'est une méthode statique et devrait être disponible sur votre page.

Un exemple d'utilisation est le suivant:

 Page.ClientScript.RegisterStartupScript(Me.GetType(), "window-script", "openWindow('someUrl')", True) 

Bien sûr, vous pouvez mettre toute url que vous avez préparée dans votre code derrière …

J'espère que cela aide.

Quelque chose à garder à l'esprit ici: pendant que votre code vb est en cours d'exécution, la page de votre navigateur n'existe pas.

Rappelez-vous que le Web fonctionne via le protocole http, et le protocole http se résume aux demandes et aux réponses . Toujours une demande d'abord, suivie d'une réponse. Souvent, la réponse est html, et c'est là que votre code vb entre. Le seul but de tout le code et le balisage aspx est que votre serveur Web puisse envoyer html au navigateur. Il n'y a pas de connexion active entre le navigateur et votre serveur. Pendant que votre code vb est en cours d'exécution, la page Web de votre navigateur n'existe pas vraiment (votre code est occupé à le créer). Alors que votre javascript est en cours d'exécution, et les ressources vb utilisées pour le créer sur le serveur depuis longtemps ont été recyclées.

Si vous essayez d'exécuter javascript sur une page en fonction de certains résultats de la logique du côté du serveur, une façon de l'atteindre est d'utiliser les contrôles littéral asp (ou d'autres types de contrôles asp)

Exemple:

 <asp:Literal ID="literalJavascript" runat="server"> function openWindow() { ... } openWindow(); </asp:Literal> 

Ensuite, affichez ou cachez ce littéral dans votre code serveur en fonction de votre autre logique.