web-dev-qa-db-fra.com

Activer/désactiver le validateur de champ requis à partir de la page cs?

J'ai deux TextBox et deux boutons dans ma page.

L'un est caché et l'autre est affiché.

Lorsque je clique sur le Button1, il enregistre les données des deux TextBox et valide chaque TextBox par le RequiredFieldValidator.

Ensuite, lorsque je clique sur Button2, il se cache (Button2) et affiche la variable TextBox masquée.

TextBox a RequiredFieldValidator une valeur de validation en fonction du clic sur l'événement de Button1.

Maintenant, le problème est que je saisis simplement du texte dans la 1ère zone de texte et que je clique sur Enregistrer. Le clic sur le bouton valide le champ requis pour le champ masqué. Je veux juste valider la zone de texte 2 quand il est affiché.

Comment puis-je éviter ça?

12
Rahul Chowdhury

Vous pouvez simplement utiliser la propriété Enabled="false" de RequiredFieldValidator.

Votre markup ressemblerait à quelque chose comme ceci en fonction de votre question.

<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" />

Et votre codebehind comme ceci:

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
}
28
Praveen Nambiar

utilisez la propriété ValidationGroup="group" sur button et affectez le groupe de validation au texte sur lequel vous souhaitez valider . J'espère que cela vous aidera

4
Vijay Singh Rana

Vous pouvez spécifier CausesValidation="false" pour le bouton secondaire. Cela est moins détaillé et peut prêter à confusion lorsque les groupes de validation sont A) excessifs pour un seul champ et B) vous devez conserver des groupes de validation lors de l’ajout de contrôles supplémentaires validateur, le champ et le résumé de validation? Ce n’est pas beaucoup le souvenir de la norme, mais moins pratique lors de l’édition.

2
Grant Thomas

C'est 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>

C'est le code derrière:

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

essaye ça.......

1
Chetan Sanghani