2

我正在使用 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中处理这个吗?

4

1 回答 1

2

您提交的代码的问题是它使用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()"  
               />
于 2011-08-11T13:44:39.040 回答