Soyez le premier à donner votre avis sur cette source.
Snippet vu 17 219 fois - Téléchargée 18 fois
using System; using System.Collections.Generic; using System.Text; using System.Web.UI; using System.ComponentModel; using System.Web.Script.Serialization; using System.Web.UI.WebControls; namespace CS.Web.UI.WebControls { public class CallBackEventArgs : EventArgs { internal CallBackEventArgs(Object callBackArgument) { this._callBackArgument = callBackArgument; } private Object _callBackArgument; public Object CallBackArgument { get { return _callBackArgument; } set { _callBackArgument = value; } } } [NonVisualControl()] [DefaultEvent("CallBack")] [ToolboxData(@"<{0}:PostBackControl runat=""server"" />")] public class PostBackControl : WebControl, IPostBackEventHandler { private Boolean _deserializeCallBackArgument = true; /// <summary> /// Gets or sets a value indicating whether the argument has to be JSON deserialized. /// </summary> /// <value> /// <c>true</c> if the argument must be JSON Deserialized otherwise, <c>false</c>. /// </value> /// <author>Cyril</author> [DefaultValue(true)] public Boolean DeserializeCallBackArgument { get { return _deserializeCallBackArgument; } set { _deserializeCallBackArgument = value; } } /// <summary> /// Occurs when the JavaScript call it. /// </summary> public event EventHandler<CallBackEventArgs> CallBack; /// <summary> /// When implemented by a class, enables a server control to process an event raised when a form is posted to the server. /// </summary> /// <param name="eventArgument">A <see cref="T:System.String"></see> that represents an optional event argument to be passed to the event handler.</param> public void RaisePostBackEvent(string eventArgument) { if (CallBack != null) { if (_deserializeCallBackArgument) { CallBack.Invoke(this, new CallBackEventArgs(new JavaScriptSerializer().DeserializeObject(eventArgument))); } else { CallBack.Invoke(this, new CallBackEventArgs(eventArgument)); } } } /// <summary> /// Gets the call back function. /// </summary> /// <param name="arguments">The arguments, will be evaluated by javascript.</param> public String GetCallBackFunction(String arguments) { if (String.IsNullOrEmpty(arguments)) { arguments = "''"; } this.EnsureID(); // Page.ClientScript.GetPostBackEventReference ne convient pas car elle convertis l'argument en String JavaScript // on ne peut donc pas intéragir directement avec JavaScript. return String.Format("__doPostBack('{0}',{1});", this.UniqueID, arguments); } } }
Ce projet de bibliotheque tu met le fichier du composant (postback control), apres ca tu lance une compile du projet bibliotheque.
Dans la page web ou tu veux utiliser le composant , tu click sur toolbox (ou boite a outil) là ou tous les composants graphiques html sont répertoriés; et ensuite tu click droit sur "choose items..." , tu clike sur parcourir et tu va chercher l'assemblie (.dll) de ta nouvelle bibliotheque , le composant postback control aparaitra dans ta boite a outil , et tu n'aura qu'a le glisser sur la page ou tu veux l'utiliser.
Merci pour ce code qui (apparemment) me resoud un très grand problème.
un problème existe encor dans la balise <cs:script>. c'est une balise inconnue. j'ai essayer de faire une balise script de type text/javascript mais sans le runat="server" ca se compile mais si j'ajoute le runat="server" le script n'est plus compis par le compilateur.
Merci de nous eclércir ce problème si quelqun connais une solution (même partielle).
Je ne sais pas si c'est à cause de IE 7 mais l'appelle de la méthode :
CallBack.Invoke(this,
new CallBackEventArgs(
new JavaScriptSerializer()
.DeserializeObject(eventArgument)
)
);
(dans le 2eme cas) génère l'erreur suivante :
Invalid JSON primitive: premier.
Aurais-tu une idée d'ou cela peut provenir ?
J'obtien une erreur lors de la compilation...
merci!
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.