Модальное всплывающее окно закрывается при нажатии OK, даже если проверка формы не удалась - PullRequest
2 голосов
/ 10 августа 2011

Я использую AjaxControlToolkit, который давно не использовал, поэтому знаю, что я немного ржавый. Я создал простую форму в asp: Panel с одним полем и обязательным полем валидатора. Я хотел бы, чтобы форма не закрывалась, если она недействительна. Кажется, я не могу понять, как выполнить эту, казалось бы, простую задачу. Код предоставляется там, где я сейчас нахожусь. Кто-нибудь знает решение о том, как этого добиться?

<%@ Control Language="C#" 
            AutoEventWireup="true" 
            CodeBehind="Supplier_VAN_Config.ascx.cs"
            Inherits="PPGEDI.App_Controls.Supplier.Supplier_VAN_Config" %>


<asp:DropDownList ID="ddlVanGroups" 
                  runat="server" 
                  AutoPostBack="true"
                  OnSelectedIndexChanged="ddlVanGroups_selectedIndexChanged" /> 
<asp:LinkButton ID="addVanGroup" runat="server" Text="Add New VAN Group" />



<ajaxToolkit:ModalPopupExtender ID="MPE" runat="server"
    TargetControlID="addVanGroup"
    PopupControlID="pnlAddVanGroup"
    BackgroundCssClass="modalBackground" 
    DropShadow="true" 
    OkControlID="addVanGroupOK" 
    CancelControlID="addVanGroupCancel" 
    PopupDragHandleControlID="pnlAddVanGroupHeader" />

<asp:Panel ID="pnlAddVanGroup" 
           runat="server" 
           style="display: none;" 
           CssClass="modalPopup" >
   <asp:Panel ID="pnlAddVanGroupHeader" 
           runat="server" 
           CssClass="modalHeader">
      Add New Van Group
   </asp:Panel>

   <div class="formInfo">
      <span class="formLabel">Group Name: 
         <asp:TextBox CssClass="formInput" 
                      ValidationGroup="AddNewVanPopup" 
                      ID="txtNewVanGroupName" 
                      runat="server" />
      </span>
      <asp:RequiredFieldValidator ID="rfvGroupName" 
                                  runat="server" 
                                  ValidationGroup="AddNewVanPopup"
                                  ControlToValidate="txtNewVanGroupName"
                                  Display="Static" 
                                  ErrorMessage="Group Name is required" 
                                  Text="Group Name is required" />

   </div>


   <asp:LinkButton ID="addVanGroupOK" 
                   Text="ADD" 
                   ValidationGroup="AddNewVanPopup"  
                   runat="server" />
   <asp:LinkButton ID="addVanGroupCancel" 
                   runat="server" 
                   Text="Cancel" />
</asp:Panel>

Когда я нажимаю кнопку ДОБАВИТЬ, когда текстовое поле пусто, оно выдает сообщение об ошибке и закрывает поле. Когда я снова нажимаю на ссылку, форма возвращается, и сообщение об ошибке все еще там. Нужно ли обрабатывать это в JavaScript?

1 Ответ

2 голосов
/ 11 августа 2011

Проблема с кодом, который вы отправили, состоит в том, что он использует OkControlID="addVanGroupOK". Он закрывает всплывающее окно и поглощает событие на стороне сервера для нажатия на него. Вы можете справиться с этим с помощью OnOkScript, но вам придется вручную вызывать событие addVanGroupOK_Click на стороне сервера (и я полагаю, вам нужно вызвать это событие).

Я предлагаю вручную закрыть всплывающее окно после проверки с использованием JavaScript

вот какой-то скрипт:

function HideMPEPopup() {
     $find(MPE).hide();

}
function ValidateAndHideMPEPopup() {
    //  hide the Popup 
    if (Page_ClientValidate('AddNewVanPopup')) {
        HideMPEPopup();
    }
}

Затем просто подключите этот скрипт к кнопке addVanGroupOK и не забудьте удалить OkControlID из ModalPopupExtender.

<asp:LinkButton ID="addVanGroupOK" 
               Text="ADD" 
               ValidationGroup="AddNewVanPopup"
               CausesValidation="true"
               OnClientClick="ValidateAndHideMPEPopup()"  
               />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...