Foros del Web » Programación para mayores de 30 ;) » .NET »

Validar textbox numérico en c# para webforms

Estas en el tema de Validar textbox numérico en c# para webforms en el foro de .NET en Foros del Web. Hola, necesito saber como se podría hacer para validar que el texto introducido en un textbox sea numérico, con estas condiciones. 1. Solo código c# ...
  #1 (permalink)  
Antiguo 27/08/2009, 04:10
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Validar textbox numérico en c# para webforms

Hola, necesito saber como se podría hacer para validar que el texto introducido en un textbox sea numérico, con estas condiciones.

1. Solo código c# , no javascript ni VB.
2. En un webform , tampoco me vale para winform.

Quiero que las respuestas se ciñan a estas condiciones, porque hasta ahora lo que he encontrado por no vale para esos dos casos.
  #2 (permalink)  
Antiguo 27/08/2009, 05:18
 
Fecha de Ingreso: agosto-2009
Mensajes: 27
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Validar textbox numérico en c# para webforms

Pues aquí tienes el código. Lo he probado con un textbox y un boton, en el evento click pones:

protected void Button1_Click(object sender, EventArgs e)
{
String TxtBx = TextBox1.Text;
foreach (char car in TxtBx)
{
if (car < '0' || car > '9')
{
//NO ES NUMÉRICO!!!!
//acabamos la funcion con un return o un response.redirect o lo
//que quieras
}
}
//Si sale del foreach significa que todo lo que ha encontrado es numérico, por lo que es un número
}

y ya esta
  #3 (permalink)  
Antiguo 27/08/2009, 06:08
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Validar textbox numérico en c# para webforms

Aún no he conseguido que funcione, no sé por qué no me hace el response.redirect, pero aún así tendría que hacer alguna modificación a ese código para que me valiese. tengo alguna idea, pero por ejemplo estoy intentando usar un RegularExpressionValidator asociado al TextBox que muestre un mensaje en caso de que la validación no se cumpla.

Pero el problema es que no sé como implementar la expresión regular en el code behind y crear la condición correspondiente de verificación.
  #4 (permalink)  
Antiguo 27/08/2009, 07:14
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Validar textbox numérico en c# para webforms

porque no usas un CustomValidator y defines tu regla en codebehind
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 28/08/2009, 01:33
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Validar textbox numérico en c# para webforms

Vale, hice esto y me ha quedado genial:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
String TxtBx = TextBox3.Text;
if (TextBox3.Text.Length > 0)
{
foreach (char car in TxtBx)
{
if (car < '0' || car > '9')
{
TextBox3.Text = "Error";
args.IsValid = false;
}
else { }
}
}
else { }
}

protected void CustomValidator2_ServerValidate(object source, ServerValidateEventArgs args)
{
if (TextBox3.Text.ToString().Trim().Length < TextBox3.MaxLength)
{
TextBox3.Text = "Error";
args.IsValid = false;
}
else { }
}
}

Estos dos customvalidators los acompañe de un requiredfieldvalidator y me indican si el textbox está vacío, si introduzco letras y si hay menos de 9 cifras.
Además los customvalidators cambian el texto del textbox a Error en caso de que se produzca alguno de los dos últimos fallos.

^-^ si alguien tiene algún consejo o crítica sobre lo que hice, puede decirla, estoy abierto a sugerencias para mejorar mi calidad de programación.
  #6 (permalink)  
Antiguo 28/08/2009, 03:26
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Validar textbox numérico en c# para webforms

Bueno, autocriticándome he conseguido hacer esto:

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
double numero;
Boolean EsNumero = double.TryParse(TextBox3.Text, out numero);
if (!EsNumero)
{
TextBox3.Text = "Error";
args.IsValid = false;
}
else { }
}

Quizás sea esta mejor opción que recorrer el texto completo, al menos en cuanto a la cantidad de operaciones a realizar.
  #7 (permalink)  
Antiguo 28/08/2009, 06:22
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Validar textbox numérico en c# para webforms

Textbox3.Text.ToString()

esta de mas .Text es un string porque reconvertirlo (esto en el CV2)
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #8 (permalink)  
Antiguo 28/08/2009, 06:49
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Validar textbox numérico en c# para webforms

ok, muy buena la apreciación. Finalmente he conseguido reducir las dos condiciones a una sola. Y he usado el customvalidator 2 que ya tenía, haciendo una pequeña modificación.

Me ha quedado lo siguiente:

al inicio del code-behind:

using System.Text.RegularExpressions;

en el namespace, y dentro de la partial class correspondiente:

//Validación del formato de teléfono usando una regular expression
public static Boolean validarTelefono(String telefono)
{
string expresion = "[0-9]{9}";

if (Regex.IsMatch(telefono, expresion))
{
if (Regex.Replace(telefono, expresion, String.Empty).Length == 0)
{ return true; }
else
{ return false; }
}
else
{
return false;
}
}

y finalmente, para el custom validator:

protected void CustomValidator2_ServerValidate(object source, ServerValidateEventArgs args)
{
String telefono = TextBox3.Text.Trim();
if (!validarTelefono(telefono))
{
CustomValidator2.ErrorMessage = "El número de teléfono debe contener obligatoriamente 9 números";
TextBox3.Text = "Error";
args.IsValid = false;
}
else { }
}

Aún me queda investigar bastante sobre las RegularExpressions, pero por lo que se ve resultan extremádamente útiles en consultas y validaciones.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:07.