2009-05-04 5 views
0

J'utilise 'Amount' comme colonne dans mon datatable pour mon application.pour effectuer la validation pour amout (prix) dans ASP.net

Je souhaite effectuer les validations suivantes w.r.t 'Amount' qui est une variable chaîne.

1) Je veux vérifier si le montant a plus de 2 chiffres après la virgule

2) si le montant est positif ou négatif .. (comme dans le cas de message d'erreur négatif doit être flashé)

Pouvez-vous aider avec des extraits de code courts et efficaces ???

EDIT:

@Peter:

Mais les chiffres de contrôle après montre décimaux erreur même pour les nombres de type 1986, 200134 qui sont donnés en entrée ...... ce qu'il faut faire?

+0

Votre question porte sur la validation des données, mais il est ambigu sur l'endroit où vous voulez le faire. Voulez-vous valider cela dans la base de données, dans votre code C#, ou en javascript sur le client? –

Répondre

1

Je mets rapidement une fonction de validation ensemble qui devrait faire ce que vous voulez.

public static bool validateAmount(string amount) 
{ 
    int posDecSep = amount.IndexOf(NumberFormatInfo.CurrentInfo.NumberDecimalSeparator); 
    int decimalPlaces = amount.Length - posDecSep - 1; 
    if (posDecSep < 0) { decimalPlaces = 0; } 
    if (decimalPlaces > 2) 
    { 
     //handle error with args, or however your validation works 
     return false; 
    } 
    decimal decAmount; 
    if (decimal.TryParse(amount, out decAmount)) 
    { 
     if (decAmount >= 0) 
     { 
      //positive 
     } 
     else 
     { 
      //negative 
     } 
    } 
    return true; 
} 
+0

Je pense que decimal.TryParse échouera sans le second paramètre, une valeur "out". –

+0

Vous avez raison, j'ai rapidement mis cela ensemble sans voir si elle compilerait. J'ai édité le code et maintenant c'est le cas, merci de le signaler. – Peter

2

Vous pouvez créer une zone de texte numérique validé comme ceci:

<asp:TextBox ID="txtDollars" Runat="server" /> 
<asp:CustomValidator 
    runat="server" 
    ErrorMessage="Only a valid number with no more than two decimal places is allowed." 
    ClientValidationFunction="validateDollars" 
    /> 

<script type=text/javascript> 
function validateDollars(source,args) 
{ 
    // first check for a valid number 
    args.IsValid = !isNaN(args.Value) 
    if(args.IsValid) 
    { 
     // confirmed numeric, now check for 3+ decimals. 
     if(args.Value.Match(/\.\d\d\d+/)) 
      args.IsValid = false; 
    } 
    return; 
} 
</script> 
Questions connexes