2011-02-07 2 views
0

Dans ASP.Net, j'essaie de créer un WebControl. Dans ce contrôle, j'ai la méthode RenderControl substituée avec mes contrôles html.Ajouter un contrôle serveur à mon contrôle Web personnalisé qui déclenche la fonction javascript et une fonction côté serveur

protected override void RenderContents(HtmlTextWriter output) 
{ 
    output.Write(@"<table><tr><td>"); 
    output.Write(@"<input type=""submit"" name=""btnExecute"" value=""Execute"" id=""btnExecute"" />"); 
    output.Write(@"</td></tr></table>"); 
} 

Comment puis-je faire le bouton appeler l'événement click pour que la méthode côté serveur btnExecute_Click() peut être appelé? En outre, ce bouton appelle une fonction javascript avant même le côté serveur.

Suggérez comment ça fonctionne.

Répondre

0

Consultez cet exemple pour savoir comment implémenter un CompositeControl (dérivé de WebControl).

http://msdn.microsoft.com/en-us/library/3257x3ea.aspx#Y114

Votre bouton il existera en tant que membre privé de votre Composite. Vous allez l'initialiser et le connecter à une méthode côté serveur dans CreateChildControls. Ensuite, vous appelez la méthode RenderControl de votre bouton lorsque vous remplacez la méthode Render de votre CompositeControl. En faisant cela, le bouton émettra le javascript qui reliera l'événement click à une publication asp.net.

Comme pour JS qui s'exécute avant le rappel ... eh bien, cela pourrait être un peu difficile. Ma suggestion serait simplement de donner au Button une classe CSS unique et de câbler votre méthode avec jQuery. Cependant, je ne suis pas sûr de savoir comment vous pourriez retarder la publication ASP.Net jusqu'à ce que votre méthode client soit terminée ... Pour moi, cela ressemble à une bastardisation de modèle, il semble que vous voulez soit faire tout ce côté serveur (traditionnel Contrôles Asp.Net avec des publications) ou tout faire côté client (jquery avec ajax).

+0

merci Tangled2. Je vais essayer cela et je reviendrai bientôt. –

Questions connexes