2010-10-20 11 views
1

Comment puis-je différencier deux déclencheurs qui peuvent envoyer des rappels POST à ​​la page pendant OnLoad? Les contrôles déclenchent automatiquement leurs gestionnaires de rappel, mais c'est trop tard. L'arrière-plan sur mon problème est probablement non pertinent, mais ... Je crée une page Web ASP.NET et j'ai deux contrôles sur la page qui peuvent déclencher un rappel, un événement "changer l'onglet actif" de mon DevExpress ASPxTabControl et un bouton "mise à jour" qui modifie certains paramètres. Je veux seulement charger le contenu sur l'onglet actif parce que les onglets sont remplis de calculs trop lourds et ainsi de suite. Pour différentes raisons, ce chargement doit se faire dans OnLoad() à moins que l'onglet ne soit celui qui déclenche le rappel, auquel cas il devrait arriver (seulement) lors de l'événement "changement d'onglet actif".Dans OnLoad, lequel des deux contrôles ASP.NET a déclenché un rappel donné?

Répondre

1

Peut-être que vous pouvez lire les champs cachés associés à callbacks:

  • __CALLBACKID (qui stocke l'ID du contrôle ICallbackEventHandler qui sera RECEVOIR le rappel)
  • __CALLBACKPARAM (qui stocke eventArgument du rappel).

Vous pouvez lire ces valeurs comme ceci:

Request["__CALLBACKID"] 
Request["__CALLBACKPARAM"] 

Si vous décidez d'utiliser le eventArgument, vous devrez alors mettre une valeur dans ce que vous seriez en mesure de lire à ce stade, pour vous donner le contrôle d'émission.

+0

Mon __EVENTTARGET semble toujours être string.Empty. Est-ce juste pour PostBacks qui ne sont pas des rappels? –

+0

Peut-être que c'est. Peut-être que vous pourriez lire la valeur __CALLBACKPARAM (qui est l'eventArgument pour les rappels) à la place (et juste mettre quelque chose qui désigne quel contrôle a émis le rappel). J'ai édité ma réponse pour refléter cela. –