Je développe actuellement une application web et crée des contrôles personnalisés. J'ai créé un "bouton modal" personnalisé, qui hérite d'un contrôle web et INamingContainer, le contrôle utilise des ressources emebedded pour enregistrer le code côté client (FancyBox jQuery), le bouton modal affiche un Iframe dans le modal et fonctionne bien sur un mon Default.aspx page.Contrôle personnalisé avec jquery, que faire ensuite?
Le problème:
J'ai essayé de déclarer un autre contrôle « bouton modal » sur une autre page mais la fenêtre contextuelle modale ne postback. J'ai recherché l'erreur et constaté que le _DoPostBack n'était pas généré sur cette page. donc j'ai ajouté la méthode: this.Page.ClientScript.GetPostBackClientHyperlink (this, "") ;. Cela a généré la fonction _doPostBack et a causé la publication, mais le modal ne s'ouvre pas la deuxième fois!
Heres mon script côté client thats généré dans ma méthode de contrôle personnalisé override CreateChildControls():
// http://fancybox.net/
StringBuilder jQueryInclude = new StringBuilder();
jQueryInclude.Append("$(document).ready(function() { ");
// Uses ".class" selector
jQueryInclude.AppendFormat("$('.{0}').fancybox(", this.ModalViewID);
jQueryInclude.Append(" { ");
jQueryInclude.Append(" 'titlePosition': 'outside',");
jQueryInclude.Append(" 'modal': 'true', ");
jQueryInclude.Append(" 'transitionIn': 'elastic', ");
jQueryInclude.Append(" 'transitionOut': 'fade', ");
jQueryInclude.Append(" }); ");
jQueryInclude.Append("});");
var closeMethod = String.Format("{0}_CloseDialog()", close.ClientID);
jQueryInclude.Append(" function METHOD_NAME { ").Replace("METHOD_NAME", closeMethod);
jQueryInclude.Append(" $.fancybox.close(); ");
jQueryInclude.AppendFormat(" __doPostBack('<%= {0} %>', '')", close.ClientID); // Postback on close to reload iframe
jQueryInclude.Append(" } ");
close.OnClientClick = closeMethod;
//user preference else all modals will be same
Page.ClientScript.RegisterClientScriptBlock(typeof(ModalButton), String.Format("{0}_fancyBox", this.ModalViewID), jQueryInclude.ToString(), true);
Ce que je dois savoir:
Comment assurer cette coutume "modalbutton" génère la fonction _DoPostBack et ouvre à nouveau quand il a été posté.
Merci à l'avance