2008-12-31 4 views
4

Dans une page ASP.NET, j'ai un contrôle utilisateur et je souhaite effectuer une action en utilisant javascript. Lorsque cette action est terminée, je veux déclencher un événement (encore en javascript) pour être récupéré par la page ASP.NET contenant (encore une fois en javascript). La raison pour laquelle je veux faire ceci est parce que j'ai plus de un contrôle d'utilisateur sur la page et j'ai besoin de l'action accomplie dans un contrôle d'utilisateur pour instancier une action dans un autre contrôle d'utilisateur sans faire un postback.Déclencher un événement javascript à partir d'un contrôle utilisateur ASP.NET et gérer dans la page ASP.NET

Est-ce que quelqu'un sait comment faire cela?

Merci beaucoup.


Salut et merci pour la réponse. Ce que j'essaie de faire est de créer une forme d'encapsulation. Donc, si le code javascript fait quelque chose dans un seul utilisateur, ce contrôle utilisateur ne devrait pas connaître l'impact ailleurs où. Cela déclencherait un événement en javascript qui peut être récupéré par la page asp.net rendue en javascript qui peut à son tour appeler une méthode javascript dans un autre contrôle utilisateur si nécessaire. L'idée ici est également d'éliminer tout besoin de publication.

Espérons que cela l'explique mieux.

Répondre

0

Vous pouvez simplement exécuter le javascript dont vous avez besoin à partir du rendu HTML de votre contrôle utilisateur.

 
<a href="javascript:doSomething();">Click Me</a> 

par les sons des choses que vous voulez créer une certaine forme de contrôleur en JavaScript. Lorsque la page charge chacune de vos commandes, inscrivez-vous auprès du contrôleur. Ensuite, une action dans l'un de vos contrôles exécute une fonction sur le contrôleur, qui fait quelque chose avec les contrôles enregistrés avec lui.

Votre JavaScript pourrait être aussi simple que:

 
var oControls = new Array();

doSomething = function() { for(var i=0;i<oControls.length;i++) { var oControl = document.getElementById(oControls[i]); oControl...... } }

Vous devez enregistrer votre commande en utilisant ScriptManager dans vos contrôles utilisateur méthode render.

 
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Startup", String.Format("oControls.push('{0}');", ClientID), True); 

6

Je pense que la façon simple de mettre en œuvre ce que vous décrivez, est d'oublier les événements JavaScript, et juste fournir une fonction « callback » à l'utilisateur-commandes.

La façon dont je le mettre en œuvre, serait d'exposer une propriété publique sur le contrôle de l'utilisateur, qui prend le nom de cette JavaScript « callback fonction ». L'utilisateur-contrôle est alors chargé d'appeler cette fonction après avoir terminé son travail côté client.

Ainsi, la page qui utilise les commandes d'utilisateurs devront mettre en œuvre cette JavaScript « fonction de rappel », puis fournir le nom dans les propriétés aux commandes de l'utilisateur.

Est-ce logique?

+0

Ça me semble bien - je pense que ça pourrait être ce que je suis après - je ferai des recherches là-dessus. Merci. – Peanut