2011-08-31 6 views
2

키패드를 수신 대기하도록 설정된 기본 버튼이있는 2 개의 패널을 포함하는 UpdatePanel이 있습니다. 해당 UpdatePanel은 ModalPopupExtender에 대한 PopupControl입니다.UpdatePanel, ModalPopupExtender 및 키 누르기 문제 입력

전체 페이지가 다시 게시되는 모달 팝업에서 Enter 키를 누르면 문제가 발생합니다. 어떤 아이디어? 여기에 몇 가지 코드 조각 (나는 불필요한 필드를 ... 삭제했습니다)입니다 : 여기, 마지막으로

public class LinkButtonDefault : LinkButton 
{ 
    private const string AddClickScript = "SparkPlugs.FixLinkButton('{0}');"; 

    protected override void OnLoad(EventArgs e) 
    { 
     string script = String.Format(AddClickScript, ClientID); 
     Page.ClientScript.RegisterStartupScript(GetType(), "click_" + ClientID, 
      script, true); 
     base.OnLoad(e); 
    } 
} 

는 IS :

<div runat="server" id="divShippingEstimatorPopup" class="shippingEstimatorModalPopup"> 
<asp:UpdatePanel ID="upPopup" runat="server"> 
    <ContentTemplate> 
     <asp:Panel runat="server" ID="pnlShippingEstimator" DefaultButton="lnkbtnGetEstimates"> 
      <div class="title content_title">Shipping Estimator</div> 
      <asp:Label runat="server" ID="lblMessage" /> 
      <table cellpadding="0" cellpadding="0" class="shipping"> 
       <!-- Removed to shorten code snippet --> 
       <tr> 
        <td colspan="2"> 
         <div class="buttonHolder">        
          <Monarch:LinkButtonDefault runat="server" ID="lnkbtnGetEstimates" CssClass="button_action button_margin_right" CausesValidation="false">Get Estimates</Monarch:LinkButtonDefault> 
          <asp:LinkButton runat="server" ID="lnkbtnCancel" CssClass="button_secondary button_secondary_fixed" CausesValidation="false">Cancel</asp:LinkButton> 
          <div class="clear"></div> 
         </div> 
         <div class="clear"></div> 
        </td> 
       </tr> 
      </table> 
     </asp:Panel> 
     <asp:Panel runat="server" ID="pnlShippingOptions" DefaultButton="lnkbtnSetEstimate"> 
      <div class="shippingOptionsHolder" runat="server" id="divShippingOptionsHolder"> 
       <!-- Removed to shorten code snippet --> 
       <div class="buttonHolder"> 
        <Monarch:LinkButtonDefault runat="server" ID="lnkbtnSetEstimate" CssClass="button_action">Set Estimate</Monarch:LinkButtonDefault> 
        <div class="clear"></div> 
       </div> 
       <div class="clear"></div> 
      </div> 
     </asp:Panel> 
    </ContentTemplate> 
</asp:UpdatePanel> 

LinkButtonDefault 명심 바로 이것이다 컨트롤의 나머지 부분 :

<asp:UpdatePanel runat="server" ID="upGetEstimate"> 
    <ContentTemplate> 
     <asp:LinkButton runat="server" ID="lnkbtnGetEstimate" CausesValidation="false">Get Estimate</asp:LinkButton> 
    </ContentTemplate> 
</asp:UpdatePanel> 

<ajaxToolKit:ModalPopupExtender ID="shippingEstimatorPopupExtender" runat="server" TargetControlID="lnkbtnFake" PopupControlID="divShippingEstimatorPopup" BackgroundCssClass="monarchModalBackground"></ajaxToolKit:ModalPopupExtender> 
<asp:LinkButton runat="server" ID="lnkbtnFake" style="display:none;"/> 

<Monarch:PopupProgress ID="popupProgressGetEstimate" runat="server" AssociatedUpdatePanelId="upGetEstimate" /> 
<Monarch:PopupProgress ID="popupProgressGetEstimates" runat="server" AssociatedUpdatePanelId="upPopup" /> 

기본적으로 사용자가 견적 가져 오기를 클릭하면 진행률 표시 줄이 나타납니다. 양식을 oads, 양식은 모달 팝업에 표시됩니다. 나는 이것이 단순한 것이라고 생각하지만, 제대로 작동하기 위해서는 올바른 조합을 얻을 수 없습니다.

답변

2

먼저 스크립트 관리자를 사용하여 스크립트를 코드에 등록하면 어떻게 될지 시험해보십시오.

내가 가입 스크립트이 방법을 사용 : 당신이 당신의 페이지에 스크립트 관리자가있는 경우

public static void RegisterStartupScript(Control c, string script) 
{ 
    if ((ToolkitScriptManager.GetCurrent(c.Page) as ToolkitScriptManager).IsInAsyncPostBack) 
     ToolkitScriptManager.RegisterStartupScript(c, c.GetType(), "Script_" + c.ClientID.ToString(), script, true); 
    else 
     c.Page.ClientScript.RegisterStartupScript(c.GetType(), c.ClientID, script, true); 
} 

이 확인합니다. 그렇지 않으면 전체 포스트 백 버전을 사용합니다.