J'ai créé un contrôle serveur ASP.Net, appelons-le "WebGrid". Le contrôle WebGrid a une ressource javascript intégrée qu'il enregistre avec le ScriptManager de la page qui l'héberge.Enregistrer une ressource javascript sur un contrôle serveur ajouté dynamiquement
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
ClientScriptManager scriptManager = this.Page.ClientScript;
scriptManager.RegisterClientScriptResource(typeof(WebGrid), "Atl.Core.Resources.Scripts.WebGrid.js");
}
J'ai aussi fait en sorte que le fichier WebGrid.js est une ressource intégrée en modifiant la propriété d'action de construction du fichier à « ressources embedded » et a ajouté la ressource aux AssemblyInfo.cs du projet en tant que tel :
[assembly: WebResource("Atl.Core.Resources.Scripts.WebGrid.js", "text/js")]
maintenant, lorsque le contrôle est déclaré dans le balisage d'une page ASPX la ressource javascript est inscrit sur le ScriptManager et tout fonctionne bien. MAIS, si j'ajoute le contrôle à ControlCollection de la page dynamiquement par un clic de bouton, le javascript n'est pas enregistré et le contrôle se plaint ne peut pas trouver telle ou telle fonction javascript. Remarque à la fois sur le bouton et le WebGrid sont situés dans différentes UpdatePanels ...
EDIT: Il semble que le problème est parce que je suis en utilisant le ClientScript contre ScriptManager voir (Differences between ScriptManager and ClientScript when used to execute JS?). Alors, comment puis-je enregistrer le script de WebGrid avec ScriptManager de la page?