2009-04-13 3 views
0

Ich habe ein asp.net ajax CollapsiblePanelExtender Steuerelement auf meiner Seite. Die Art und Weise diese Steuerung ausgelegt ist, können Sie eine Kontrolle geben Sie die Platte zu öffnen und eine andere Steuerung um es zu schließen:Wie kann ich mehrere Schließen-Schaltflächen mit einem CollapsiblePanelExtender haben?

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

Wenn ExpandControlID und CollapseControlID identisch sind, wie sie in diesem Beispiel sind, dann ist die Steuerung schaltet die Platte offen und geschlossen.

Aber was ich möchte, ist ein anderes Steuerelement (in PanelStuff), mit dem der Benutzer dieses Panel schließen kann. Idealerweise würde ich gerne spezifizieren:

CollapseControlID="butToggle,butClose" 

Irgendwelche Ideen, wie man das macht?

Antwort

2

Eine Möglichkeit, dies zu erreichen:

Vergeben Sie einen BehaviorID zum CollapsiblePanelExtender:

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

Erstellen Javascript-Funktion gewünschte Verhalten auszuführen:

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

Execute-Funktion in Ereignishandler:

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

Wo haben Sie _doClose() gefunden? Gibt es Dokumentation für diese Art von Befehlen? Was wäre, wenn ich expandieren und nicht zusammenbrechen wollte? Ich vermute, doOpen() würde funktionieren, aber was wäre, wenn ich es nicht wüsste. – adinas

+0

adinas: Ich muss zugeben, ich weiß nicht, wo Sie Dokumentationen suchen würden. Dies können nicht dokumentierte zugrunde liegende Supportfunktionen für den Extender sein. Das heißt, Sie können auch _doOpen() und _doToggle() verwenden. – HectorMac

1

Wie oben, aber ich suchte nach einem Toggle. _doToggle() würde nicht funktionieren, also nur als Referenz:

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

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