0

J'ai une série de paramètres userc imbriqués dans un ajaxToolkit: TabContainer qui doit être validé. Le contrôle utilisateur a un contrôle txtFlightFrom et un contrôle txtFlightTo et je dois m'assurer que leurs données sont dans le txtFlightTo s'il y a des données dans txtFlightFrom (vous ne pouvez pas quitter un aéroport sans aéroport de destination). J'essaye le contrôle de l'Asp: CompareValidator pour la première fois mais mon vrai problème est comment je déclenche le validateur quand je passe à l'onglet suivant. J'ai essayé de le faire à partir de ma page ASPX, mais cela ne fait que causer des problèmes et n'a pas de sens logique pour moi.Validation sur usercontrol dans le contrôle de l'onglet ajax

ascx:

<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="txtFlightFrom" ControlToCompare="txtFlightTo" Type="String" ErrorMessage="CompareValidator" /> 
<asp:Label ID="lblCompareTOFROM" runat="server" /> 

<asp:TextBox ID="txtFlightFrom" runat="server" /> 
<asp:TextBox ID="txtFlightTo" runat="server" /> 

aspx:

<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" AutoPostBack="true" OnActiveTabChanged="TabContainer1_ActiveTabChanged"> 
    <ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="Flights"> 
     <ContentTemplate> 
      <ucFlight:FlightControl id="FlightControl1" Runat="server" /> 
      <ucFlight:FlightControl id="FlightControl2" Runat="server" /> 
     </ContentTemplate> 
    </ajaxToolkit:TabPanel> 

<ajaxToolkit:TabPanel ID="TabPanel2" runat="server" HeaderText="Cars"> 
    stuff 
</ajaxToolkit:TabPanel> 

ascx.cs

public string ValidateToFrom 
{ 
    get { return lblCompareTOFROM.Text; } 
    set { lblCompareTOFROM.Text = value; }   
} 

aspx.cs

if (Page.IsValid) 
{ 
    FlightControl1.ValidateToFrom = "Not Valid"; 
} 

J'ai également essayé des variations de ce code dans le ascx.cs mais cela n'a pas de sens car l'événement se passe dans le aspx.cs

Des pensées?

Répondre

0

L'astuce que j'ai utilisée il y a quelques mois consistait à déclencher la fonction de validation du côté client en appelant une fonction javascript lorsque l'utilisateur modifiait l'onglet actif. Une recherche rapide sur le net me conduisent à cette example (je ne peux pas faire un test en ce moment, désolé):

<ajaxToolkit:TabContainer runat="server" ID="Tabs" OnClientActiveTabChanged="ActiveTabChanged"> 


//Javascript function 
function ActiveTabChanged(sender, e) { 
    if (Page_ClientValidate() == false) { 
     var ctrl = $find("Tabs"); 
     var tabpanel = ctrl.get_tabs()[0]; 
     handleTabChange = false; 
     ctrl.set_activeTab(tabpanel); 
    } 
} 
+0

Vous mettriez le script sur la page ASPX et non le usercontrol lui-même? (Ce qui, je suppose, serait logique vu que l'événement se passe là-bas.) – Jeremy

+0

Les contrôles de validation seront toujours dans vos contrôles Web internes. Sur la page (c'est-à-dire à l'intérieur du contrôle tabcontainer), vous allez simplement déclencher la fonction de validation de page. – Ghidello