2010-08-25 2 views
4

Vu:ASP.NET C# uniquement valider partie d'un formulaire si la case cochée

<div class="subHead">Stock Options</div> 
    <table class="settingTable"> 
     <tr> 
      <td colspan="2"><b>Limited Stock</b></td> 
     </tr> 
     <tr> 
      <td width="50" align="center"><asp:CheckBox ID="limitedStock" runat="server" /></td> 
      <td>If checked this product will have a limited stock</td> 
     </tr> 
    </table> 
    <table class="settingTable"> 
     <tr> 
      <td colspan="2"><b>Stock Count</b></td> 
     </tr> 
     <tr> 
      <td> 
       <asp:TextBox ID="stockCount" runat="server" CssClass="tbox"></asp:TextBox> 
       <asp:RequiredFieldValidator runat="server" 
          id="RequiredFieldValidator2" 
          ControlToValidate="stockCount" 
          ErrorMessage="You need to enter a value" 
          display="Dynamic" /> 
       <asp:RangeValidator runat="server" 
        id="rangeVal1" 
        MinimumValue="0" MaximumValue="999999999999"       
        ControlToValidate="stockCount" 
        ErrorMessage="Enter a numeric value of at least 0" 
        display="Dynamic" /> 
      </td> 
     </tr> 
    </table> 

Comment puis-je faire pour que le validateur pour le nombre d'actions exécuté à moins que l'habitude la case est cochée stock limité?

Répondre

3

Utilisez plutôt un CustomValidator. Voir la section sur la validation côté client au bas de cette page: http://msdn.microsoft.com/en-us/library/f5db6z8k%28VS.71%29.aspx

Vous pouvez utiliser un script qui vérifie la valeur de la case à cocher et effectue votre validation.

<script language="text/javascript"> 
    function validateStockCount(oSrc, args){ 
     //Use JQuery to look for the checked checkbox and only if it is found, validate 
     if($('.limitedStock:checked') == undefined) { 
      args.IsValid = true; 
     } 
     else { 
      args.IsValid = (args.Value.length >= 0) && (args.Value.length <= 999999999999); 

     } 
    } 
</script> 

<asp:CheckBox ID="limitedStock" runat="server" CssClass="limitedStock" /> 

<asp:TextBox ID="stockCount" runat="server" CssClass="tbox"></asp:TextBox> 

<asp:CustomValidator id="CustomValidator1" runat=server 
    ControlToValidate = "stockCount" 
    ErrorMessage = "You need to enter a numeric value of at least 0!" 
    ClientValidationFunction="validateStockCount" > 
</asp:CustomValidator> 
2

Vous pouvez définir AutoPostBack true sur la case à cocher, puis en cas de case à cocher vous pouvez activer/disbale le validateur champ obligatoire.

Dans la page ASPX définissez la propriété AutoPostBack de la case à cocher

<asp:CheckBox ID="limitedStock" runat="server" AutoPostBack="True" /> 

En cas CheckChanged de la case à cocher vous définissez simplement la propriété Enabled du RequiredFieldValidator selon les besoins:

RequiredFieldValidator2.Enabled = limitedStock.Checked; 

James: -)

Questions connexes