2012-03-23 2 views
1

트리거에서 아코디언 헤더 제어 :방지 아약스 컨트롤 툴킷 아코디언을 감안할 때 아코디언 롤 - 업/다운 행동

<HeaderTemplate> 
     <asp:Button 
      ID="PushPlanButton" 
      Text="Push" 
      runat="server" 
      OnClick="PushPlanButtonPressed" /> 

     <ajaxToolkit:ConfirmButtonExtender 
      ID="ConfirmButtonExtender1" 
      runat="server" 
      TargetControlID="PushPlanButton" 
      ConfirmText="Please confirm" /> 
    </HeaderTemplate> 

다음는 HeaderTemplate에 ConfirmButtonExtender와 쌍을 이루는 버튼

<ajaxToolkit:Accordion runat="server" 
    SelectedIndex="0" 
    HeaderCssClass="accordionHeader" 
    HeaderSelectedCssClass="accordionHeaderSelected" 
    ContentCssClass="accordionContent" 
    AutoSize="None" 
    FadeTransitions="true" 
    TransitionDuration="250" 
    FramesPerSecond="40" 
    RequireOpenedPane="false" 
    SuppressHeaderPostbacks="true"> 

버튼을 클릭하면 "확인하십시오"라는 모달 메시지 상자가 나타납니다.

사용자가이를 닫으면 Accordion은 클릭 한 것으로 생각하고 활성 패널을 닫습니다.

어떤 방식 으로든이 동작을 억제 할 수 있습니까?

답변

1

내 의견으로는 귀하의 필요에 따라 AjaxControlToolkit 소스를 조정하는 것이 가장 좋습니다. 이 경우 confirmButtonBehavior.pre.js 파일에서 비트를 바꿀 필요가 있습니다. 아래 _onClick 방법을 다시 작성 :

_onClick: function (e) { 
    /// <summary> 
    /// Button's click handler to display the confirmation dialog 
    /// </summary> 
    /// <param name="e" type="Sys.UI.DomEvent"> 
    /// Event info 
    /// </param> 

    if (this.get_element() && !this.get_element().disabled) { 
     if (this._ConfirmOnFormSubmit) { 
      // Note that this behavior was triggered (for later) 
      Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior = this; 
     } else { 
      // Display the dialog and cancel the click if necessary 
      if (!this._displayConfirmDialog()) { 
       e.preventDefault(); 
       e.stopPropagation(); // added to prevent event bubbling 
       return false; 
      } 
      else if (this._oldScript) { 

       if (String.isInstanceOfType(this._oldScript)) { 
        eval(this._oldScript); 
       } 
       else if (typeof (this._oldScript) == 'function') { 
        this._oldScript(); 
       } 
      } 
     } 
    } 
} 

을하지만 당신은 몇 가지 이유에 의해 라이브러리 소스를 조정할 수없는 경우, 다른 방법을 적용 할 수 있습니다. 아래 스크립트를 페이지에 추가하십시오 :

function pageLoad() 
{ 
    var extender = $find("<%= ConfirmButtonExtender1.ClientID %>"); 
    $removeHandler(extender.get_element(), "click", extender._clickHandler); 

    extender._clickHandler = Function.createDelegate(extender, function (e) { 
      if (this.get_element() && !this.get_element().disabled) { 
       if (this._ConfirmOnFormSubmit) { 
        // Note that this behavior was triggered (for later) 
        Sys.Extended.UI.ConfirmButtonBehavior._clickedBehavior = this; 
       } else { 
        // Display the dialog and cancel the click if necessary 
        if (!this._displayConfirmDialog()) { 
         e.preventDefault(); 
         e.stopPropagation(); 
         return false; 
        } 
        else if (this._oldScript) { 

         if (String.isInstanceOfType(this._oldScript)) { 
           eval(this._oldScript); 
         } 
         else if (typeof (this._oldScript) == 'function') { 
           this._oldScript(); 
         } 
        } 
       } 
      } 
    }); 
    $addHandler(extender.get_element(), "click", extender._clickHandler); 
} 
+0

당신은 천재입니다. 나는 이것을 아직 시도하지 않았지만 분명히 연구되었다. 나는 그것을 즉시 시험해보고 다시 게시 할 것이다. 정말 고마워! – tomfanning

관련 문제