Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/05/2009, 02:36
kreikol
 
Fecha de Ingreso: abril-2009
Mensajes: 32
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: BindingNavigator y controlar campo nulos

Hola de nuevo,revivo el post por la pregunta q voy ahcer viene a raiz de lo comentado aquí.

Al final hice lo q comentamos y cree yo el código de los botones, para llevar el control. me cree tmb una función para validar los campos q la llamo desde los métodos de los botones cuando es necesario. la funciona validarCampos() comprueba todos los campos y crea un string con los errores encontrados, y al final si el string no está vació lanza una excepción q me he creado.

Bien eso funciona correctamente excepto en un caso q funciona, pero cuando lueog capturo mi excepcion y muestro el mensaje de error esa linea me genera una excepción de NoNullAllowedException.
Os pongo le código de la funciona validarCampos() y el de la funcion donde me sata la otra excepcion:

Código:
private void validarCampos()
        {
            StringBuilder error = new StringBuilder();

            if (dniTextBox.Text.Trim() == "")
                error.AppendLine("El campo DNI no puede ser nulo");

            if (cmbCategoria.Text == "")
                error.AppendLine("El campo Categoría no puede ser nulo");

            if (nombreTextBox.Text == "")
                error.AppendLine("El campo Nombre no puede ser nulo");

            if (apellidosTextBox.Text == "")
                error.AppendLine("El campo Apellidos no puede ser nulo");

            if (direccionTextBox.Text == "")
                error.AppendLine("El campo Dirección no puede ser nulo");

            if(cod_postalTextBox.Text == "")
                error.AppendLine("El campo Código Postal no puede ser nulo");

            if(poblacionTextBox.Text == "")
                error.AppendLine("El campo Población no puede ser nulo");

            if(cmbProvincia.Text == "")
                error.AppendLine("El campo Provincia no puede ser nulo");

            if(cmbFormaPago.Text == "")
                error.AppendLine("El campo Forma de Pago no puede ser nulo");

            if(error.ToString() != "")
                throw new CamposInvalidosExcepcion(error.ToString());

        }

private void lista_Click(object sender, EventArgs e)
        {
            try
            {
                validarCampos();
            }
            catch (CamposInvalidosExcepcion ups)
            {
                MessageBox.Show("Revise los siguientes errores: \n\n" + ups.Mensaje, "Campos incorrectos");
            }
            catch (Exception ups)
            {
                MessageBox.Show("Se produjo un error inesperado. ERROR:\n" + ups.Message, "Error");
            }
        }
La excepción me salta en esta línea "MessageBox.Show("Revise los siguientes errores: \n\n" + ups.Mensaje, "Campos incorrectos");"

La solución q se me ha ocurrido en un primer momento es meterla linea del cath dentro deotro try -catch en el q controle la excepcion notnull. Pero.... es que no entiendo porqué salta, sobre todo porq e los otros casos q llamo a validar campos no salta. la excepción salta si alguno de los campos q no permiten nulos son nulos, pero porqué sólo en ese caso, y en los otros casos en los q tmb estan nulos no salta?? Y porque lanza esa excepcion la función Show de messageBox ?¿

Bueno a ver si alguien me puede echaruna mano, muchas gracias.

Un saludo!!