2013-04-05 8 views
12

Ho due TextBox e due pulsanti nella mia pagina.Abilita/Disabilita Validatore campo richiesto dalla pagina cs?

Uno è nascosto e l'altro è visualizzato.

Quando faccio clic su Button1, esso salverà i dati dei due e convaliderà ciascun TextBox dallo RequiredFieldValidator.

Quindi quando faccio clic su Button2, si nasconde (Button2) e viene visualizzato il numero nascosto TextBox.

Entrambe TextBox ha RequiredFieldValidator che convalida con l'evento dell'evento Button1.

Ora il mio problema è quando inserisco semplicemente il testo nel 1st TextBox e faccio clic su Salva, il clic del pulsante sta convalidando il campo richiesto per il campo nascosto. Voglio solo convalidare la 2 casella di testo quando viene visualizzata.

Come posso evitare questo?

+0

La proprietà ControlToValidate è lì a quale controllo convalida o Pubblica il tuo codice ti aiuteremo. –

+0

Puoi fornire alcuni dei tuoi codici? – lexeRoy

risposta

25

si può usare semplice la Enabled="false" proprietà di RequiredFieldValidator.

Il tuo markup sarebbe simile a questo in base alla tua domanda.

<asp:TextBox runat="server" ID="tb1"></asp:TextBox> 
<asp:RequiredFieldValidator runat="server" ID="rfv1" ControlToValidate="tb1" ErrorMessage="*" ValidationGroup="gvSave"> 
</asp:RequiredFieldValidator> 

<asp:TextBox runat="server" ID="tb2" Visible="false"></asp:TextBox> 
<asp:RequiredFieldValidator runat="server" ID="rfv2" ControlToValidate="tb2" ErrorMessage="*" Enabled="false" ValidationGroup="gvSave"> 
</asp:RequiredFieldValidator> 

<asp:Button runat="server" ID="btn1" Text="Save" onclick="btn1_Click" ValidationGroup="gvSave"/> 
<asp:Button runat="server" ID="btn2" Text="Show" onclick="btn2_Click" /> 

E la tua codebehind in questo modo:

protected void btn2_Click(object sender, EventArgs e) 
{ 
    tb2.Visible = true; 
    rfv2.Enabled = true; // Enables the second requiredfieldvalidator 
} 

protected void btn1_Click(object sender, EventArgs e) 
{ 
    // your Saving code here 
} 
+2

Ha aiutato l'uomo grazie –

+0

Grazie per avermi suggerito 'ValidationGroup'. –

+0

Mi ha aiutato anche. Grazie! –

4

utilizzare la proprietà ValidationGroup="group" su button e assegnare il gruppo di convalida al testo su cui si desidera eseguire la convalida. auguriamo che contribuiscano

2

È possibile specificare CausesValidation="false" per il pulsante secondario, questo è meno prolisso e potenzialmente confusione quando gruppi di validazione sono A) eccessivo per un singolo campo e B) si deve mantenere gruppi di validazione quando si aggiungono ulteriori controlli (lo mettiamo sul pulsante, il validatore, il campo e la sintesi di convalida? non è molto il ricordo lo standard, ma meno pratico quando la modifica.

+0

Ho fatto la CausesValidation = "false" ma non funziona –

1

Questo è aspx:

    <td align="right"> 
          Cut Type : 
         </td> 
         <td class="required"> 
          <telerik:RadComboBox ID="cmbCutType" runat="server" MaxHeight="200px" Width="200px" 
           Filter="Contains" EnableLoadOnDemand="true" EmptyMessage="Select Cut Type" OnSelectedIndexChanged="cmbCutType_SelectedIndexChanged" 
           AutoPostBack="true"> 
          </telerik:RadComboBox> 
          <asp:RequiredFieldValidator runat="server" ID="rfvCutType" Display="None" ControlToValidate="cmbCutType" InitialValue="" 
           ValidationGroup="Save" ErrorMessage="Cut Type is Mandatory" 
           ForeColor="Red"></asp:RequiredFieldValidator> 
          <ajaxToolkit:ValidatorCalloutExtender ID="vceCutType" TargetControlID="rfvCutType" 
           runat="server"> 
          </ajaxToolkit:ValidatorCalloutExtender> 
         </td> 

Questo è codice dietro:

protected void btn2_Click(object sender, EventArgs e) 
{ 
    rfvCutType.IsValid = false; 
} 

provare questo ..... ..

Problemi correlati