2009-04-13 9 views
0

J'ai un contrôle asp.net ajax CollapsiblePanelExtender sur ma page. La façon dont ce contrôle est conçu, vous pouvez spécifier un contrôle pour ouvrir le panneau et un autre contrôle pour le fermer:Comment puis-je avoir plusieurs boutons de fermeture avec un CollapsiblePanelExtender?

<ajaxToolkit:CollapsiblePanelExtender ID="cpe" runat="Server" 
    TargetControlID="panelStuff" 
    ExpandControlID="butToggle" CollapseControlID="butToggle" Collapsed="True" 
    SuppressPostBack="true" /> 

Si ExpandControlID et CollapseControlID sont identiques, comme dans cet exemple, la commande permet de basculer le panneau ouvert et fermé.

Mais ce que je voudrais, c'est un autre contrôle (dans panelStuff) qui permet à l'utilisateur de fermer ce panneau. Idéalement, je voudrais préciser:

CollapseControlID="butToggle,butClose" 

Toutes les idées comment faire cela?

Répondre

2

Une façon d'y parvenir:

Affectez un BehaviorID au CollapsiblePanelExtender:

<ajaxToolkit:CollapsiblePanelExtender ID="cpe" runat="Server" 
    BehaviorID="cpeForBehavior" 
    TargetControlID="panelStuff" 
    ExpandControlID="butToggle" CollapseControlID="butToggle" Collapsed="True" 
    SuppressPostBack="true" /> 

Créer la fonction javascript pour exécuter le comportement souhaité:

function closeCpe() { 
    $find("cpeForBehavior")._doClose(); 
} 

fonction surExécuterdans gestionnaire d'événements:

<input type="button" id="MyOtherButton" onclick="closeCpe();" /> 
+0

Où avez-vous trouvé _doClose()? Y a-t-il de la documentation quelque part pour ce genre de commandes? Et si je voulais m'élargir et ne pas m'effondrer? Je devine que doOpen() fonctionnerait mais si je ne le savais pas. – adinas

+0

adinas: Je dois admettre que je ne sais pas où vous iriez pour trouver de la documentation. Il peut s'agir de fonctions de support sous-jacentes non documentées pour l'extension. Cela dit, vous pouvez aussi utiliser _doOpen() et _doToggle(). – HectorMac

1

Identique à la réponse ci-dessus mais je cherchais une bascule. _doToggle() ne fonctionnerait pas, donc juste pour référence:

function closeCpe() { 
      var cpe = $find("cpeForBehavior"); 

      if (cpe.get_Collapsed()) { 
       cpe._doOpen(); 
      } 
      else { 
       cpe._doClose(); 
      } 
     }