2010-06-01 4 views
1

J'ai un programme où j'utilise un popup modal qui permet à l'utilisateur d'ajouter de nouveaux éléments à une base de données, cela fonctionne très bien, mais je voudrais ajouter une validation. Par exemple lorsqu'une exception est levée en raison d'une entrée en double. J'ai regardé à travers quelques exemples sur la façon d'utiliser le contrôle de validation personnalisé asp.net.validation côté serveur sur ajax modal popup extender

Le problème est que dès que l'événement de validation se déclenche, le popup modal disparaît à cause de la publication.

<asp:Panel ID="panComp" runat="server" Height="180px" Width="400px" cssclass="ModalWindow"> 
     <table width="100%"> 
       <tr> 
         <td><asp:Label Text="Name" runat="server" /></td> <td><asp:TextBox ID="txtCompName" runat="server" /> 
         <asp:CustomValidator ID="CustomValidator1" OnServerValidate="btnAddComp_Click" runat="server" ErrorMessage="Competency already exists" ControlToValidate="txtCompName" /> 
         <cc1:ValidatorCalloutExtender ID="ValidatorCalloutExtender1" runat="server" TargetControlID="CustomValidator1" />                
         </td> 
      </tr> 
     </table> 
     <br /> 
     <asp:Button ID="btnAddComp" runat="server" Text="Add" /> 
     <asp:Button ID="btnCancel" runat="server" Text="Cancel" /> 
    </asp:Panel> 

L'événement se déclenche comme il se doit et le ModalPopupExtender OnOkScript n'a pas une valeur

protected void btnAddComp_Click(object source, ServerValidateEventArgs args) 
{ 
    if (!String.IsNullOrEmpty(txtCompName.Text)) 
    { 
     try 
     { 
      _ass.AddCompetency(txtCompName.Text);     
      args.IsValid = true; 
     } 
     catch (Exception) 
     { 
      args.IsValid = false; 
     } 
    } 

} 

Répondre

2

C'est délicat parce que vous avez besoin du postback arriver pour le validateur personnalisé. Ce que vous pouvez faire est de vérifier si la page est valide; Si une erreur est présente, vous pouvez afficher le panneau en appelant la méthode Show extender modal soit sur le serveur, soit sur le client pour le resynchroniser avec l'erreur.

Sinon, la fenêtre contextuelle modale ne conserve pas son état ouvert entre les publications.

HTH.

+0

Hrm Je pense que c'est la seule option que j'ai, merci;) – fluf

+0

Cela a fait l'affaire merci: D – fluf

Questions connexes