2012-03-23 84 views
1

鉴于一个Ajax控制工具包手风琴在手风琴报头中的控制:防止从触发手风琴滚上/下行为

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

与在HeaderTemplate中一个ConfirmButtonExtender成对的按钮:

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

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

当点击按钮时,模态消息框出现,“请确认”,如预期的那样。

当用户解散它时,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 2012-03-25 13:42:44