3nity Skrevet 20. april 2010 Del Skrevet 20. april 2010 Hei , lager en webshop i et skoleprosjekt vi har, og har da selvsagt en tekstboks der du kan velge hvor mange du vil bestille av f.eks en tskjorte. Det jeg sliter med er å få til er at dersom en bruker skriver en bokstav istedet for et tall , så vil jeg ha opp en feilbeskjed , og ikke få en feil på selve siden. Hvordan gjør jeg dette ? Finner ikke dette med google , desverre. Lenke til kommentar
MailMan13 Skrevet 20. april 2010 Del Skrevet 20. april 2010 (endret) int antall; if ( Integer.TryParse(tekstboks.Text, out antall) { // All is well } else { // Dette var ikke en integer, feilhåndtering her } http://msdn.microsoft.com/en-us/library/f02979c7.aspx Endret 20. april 2010 av MailMan13 Lenke til kommentar
:Francis: Skrevet 13. august 2010 Del Skrevet 13. august 2010 (endret) Du kan også bruke Ajax control toolkit sin filtered textbox extender EDIT: Her er kode du kan bruke for å lage en popup med feilmelding til brukeren hvis valideringen feiler: private void MessageBox(string message) { this.RegisterStartupScript(this, this.GetType(), "err_msg", "alert('" + message + "');", true); } Francis Endret 13. august 2010 av :Francis: Lenke til kommentar
oddi Skrevet 19. august 2010 Del Skrevet 19. august 2010 Selv bruker jeg en event og regex slik at det ikke er mulig å bruke annet enn tall og backspace/delete i tekstboksen, dersom brukeren prøver å skrive inn noe annet skjer det ingenting. private void textBox_privatestoresell_quantity_KeyPress(object sender, KeyPressEventArgs e) { if ((!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\\d+"))&&(!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\b" ))) e.Handled = true; } Lenke til kommentar
GeirGrusom Skrevet 19. august 2010 Del Skrevet 19. august 2010 Jeg laget en tekstboks for dette en gang. using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Text.RegularExpressions; namespace orsaDB { public class CheckedTextEditor : TextBox { protected Regex m_reg; protected string m_reg_exp; protected bool m_ignore_case; protected bool m_allow_invalid_text; [DefaultValue(false)] public bool IgnoreCase { get { return m_ignore_case; } set { m_ignore_case = value; RebuildRegex(); } } [DefaultValue(false)] public bool AllowInvalidText { get { return m_allow_invalid_text; } set { m_allow_invalid_text = value; } } [DefaultValue(true)] public bool IsTextValid { get { if ( m_reg != null ) return ValidateText( Text ); else return true; } } protected void RebuildRegex() { m_reg = new Regex(m_reg_exp, m_ignore_case ? RegexOptions.IgnoreCase : RegexOptions.None); } [DefaultValue("")] public string RegularExpression { get { return m_reg_exp; } set { m_reg_exp = value; m_reg = new Regex( m_reg_exp ); RebuildRegex(); } } public CheckedTextEditor() { m_reg_exp = ""; m_reg = null; } protected override void OnKeyPress( KeyPressEventArgs e ) { base.OnKeyPress( e ); if ( e.KeyChar != (char)8 && !m_allow_invalid_text) { string text = Text + e.KeyChar; e.Handled = !ValidateText( text ); } } protected bool ValidateText( string text ) { Match m = m_reg.Match( text ); return (m.Index == 0) && (m.Length == text.Length); } protected override void OnTextChanged( EventArgs e ) { ForeColor = IsTextValid ? SystemColors.WindowText : Color.Red; base.OnTextChanged( e ); } /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose( bool disposing ) { if ( disposing && ( components != null ) ) { components.Dispose(); } base.Dispose( disposing ); } #region Component Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { components = new System.ComponentModel.Container(); } #endregion } } AllowInvalidText gjør sånn at man kan skrive en verdi som ikke matcher, men teksten blir farget rød. Lenke til kommentar
The Jackal Skrevet 1. september 2010 Del Skrevet 1. september 2010 Hvis dette er prosjektet er skrevet i ASP.NET (noe jeg går ut i fra siden det er en webshop og postet her)...så finnes det en ferdig kontroll du kan bruke. Null vits å lage dine egne klasser, styre med events og greier for dette. <asp:TextBox ID="TextBox1" runat="server" /> <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Vennligst skriv inn et tall" ControlToValidate="TextBox1" ValidationExpression="[0-9]*" /> Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå