2008-12-29 16 views
0

Je tente de gérer une connexion ajax en appelant une méthode onclick sur un composant WebPart distinct afin de forcer la publication partielle sur le consommateur.Comment j'appelle Ajax OnClick du composant WebPart Fournisseur vers WebPart client

partie Web A (fournisseur) appelle la méthode sur le Web Partie B (consommateurs)

Web Partie A

type t = myButton.GetType(); objet [] p = nouvel objet [1]; p [0] = EventArgs.Empty; MethodInfo m = t.GetMethod ("OnClick", BindingFlags.NonPublic | BindingFlags.Instance); m.Invoke (myButton, p);

Web Partie B

public void btnHidden_Click (expéditeur d'objet, EventArgs e) { Label1.Text = "Bouton caché:" + DateTime.Now.ToString(); Lorsque j'utilise la réflexion, j'obtiens les informations correctes sur le HiddenButton. Cependant, je ne peux pas appeler l'événement "OnClick". Le btnHidden_Click ne s'exécute pas. Il fonctionne correctement lorsque j'appelle WebPart B à WebPart B, mais pas à partir d'un autre composant WebPart.

Il ne semble pas y avoir trop d'informations concernant ce comportement. Aucune suggestion?

Merci.

Rob

Répondre

1

Depuis composants WebPart doivent être un couplage lâche que possible, j'utiliser les connexions Web partie infrastructure et le modèle d'abonnement pour gérer cela.

La communication entre les parties connectées s'effectue via une interface. Cette interface peut inclure des méthodes Subscribe et Unsubscribe. Une fois la connexion établie, la partie consommateur peut s'abonner aux contrôles UpdatePanel dont elle a besoin pour être mise à jour lorsque l'élément sélectionné change dans le fournisseur. Ensuite, lorsque l'élément sélectionné change, la partie fournisseur peut parcourir ses abonnés et appeler la méthode Update sur le UpdatePanel pour forcer une publication asynchrone. Je n'ai pas essayé cela moi-même mais le seul inconvénient que je peux voir est que vous pourriez devoir mettre en file d'attente les appels à la mise à jour parce que n'importe quel déclenchement d'une publication asynchrone annule tous les autres publications asynchrones en cours.

J'espère que cela aide.

0

C'est incroyablement facile à résoudre en utilisant JavaScript. Je ne veux pas dire que Web Parts est mauvais (dans la mesure où je n'ai jamais travaillé avec eux), mais je dirai que si vous êtes capable de programmer le moindre petit morceau de JS dans les parties web, le code est :

document.getElementById('ElID').onclick(); 

Bonne chance!