ASP.NET - Condicionar uso de validadores en webform

 
Vista:
Imágen de perfil de Reinaldo

Condicionar uso de validadores en webform

Publicado por Reinaldo (3 intervenciones) el 30/04/2016 04:55:53
Cordial saludo.
Cómo puedo hacer para que los validator de esta página sólo se activen cuando deseo insertar un nuevo registro o para validar los datos a actualizar después de hacer clic en el botón?, si no los marco como comentarios apenas cargo los datos me muestra los mensajes del validator. Adjunto código:
Default.aspx.cs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Data.Sql;
 
public partial class _Default : System.Web.UI.Page
{
    //cadena de conexion la declaramos a nivel de la clase para utilizarla en todos los eventos.
    SqlConnection cn = new SqlConnection("Data Source=(local)\\sqlexpress;Initial Catalog=clientes;Persist Security Info=True;User ID=sa;Password=admin+123");
 
    protected void Page_Load(object sender, EventArgs e)
    {
        this.cargardatos();
    }
 
    public void cargardatos()
    {
        //hacemos la consulta a la base de datos
        SqlCommand cmd = new SqlCommand("Select * from cliente", cn);
 
        //objeto adapter para hacer el enlace y llenado del dataset
        SqlDataAdapter adapter = new SqlDataAdapter();
 
        //asignamos la propiedad selectcommand al objeto command para que ejecute consulta
        adapter.SelectCommand = cmd;
 
        //abrimos la conexion
        cn.Open();
 
        //creamos objeto dataset
        DataSet objdataset = new DataSet();
 
        //llenamos el datable del dataset
        //el metodo fill obtiene los datos recuperados del dataadapter y los coloca dentro del dataset
        adapter.Fill(objdataset);
 
        //cerramos conexion
        cn.Close();
 
        //enlazamos los datos al griedvied
        GridView1.DataSource = objdataset;
        GridView1.DataBind();
    }
 
 
    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        SqlCommand cmd_sel = new SqlCommand("select_cliente_ok", cn);
        cmd_sel.CommandType = CommandType.StoredProcedure;
 
        cmd_sel.Parameters.Add("@at_id_cliente", SqlDbType.Decimal);
 
        cmd_sel.Parameters.Add("@msj", SqlDbType.VarChar, 50);
        cmd_sel.Parameters["@msj"].Direction = ParameterDirection.Output;
 
        cmd_sel.Parameters["@at_id_cliente"].Value = Convert.ToDecimal(txtBusCC.Text);
        //cmd_sel.Parameters["@msj"].Value = null;
 
        cn.Open();
        cmd_sel.ExecuteNonQuery();
        SqlDataReader reader = cmd_sel.ExecuteReader();
 
 
        if (reader.Read())
        {
            txtId.Text = Convert.ToString(cmd_sel.Parameters["@at_id_cliente"].Value);
            txtNom.Text = reader.GetString(0);
            txtDir.Text = reader.GetString(1);
            txtTel.Text = reader.GetString(2);
            lblEstado.Text = Convert.ToString(cmd_sel.Parameters["@msj"].Value);
            reader.Close();
        }
        else
        {
            lblEstado.Text = Convert.ToString(cmd_sel.Parameters["@msj"].Value);
        }
 
        this.cargardatos();
    }
 
 
 
    protected void btnActualizar_Click(object sender, EventArgs e)
    {
        SqlCommand cmd_sel = new SqlCommand("actualiza_cliente3", cn);
        cmd_sel.CommandType = CommandType.StoredProcedure;
 
        cmd_sel.Parameters.Add("@at_id_cliente", SqlDbType.Decimal);
        cmd_sel.Parameters.Add("@at_mod_id_cliente", SqlDbType.Decimal);
        cmd_sel.Parameters.Add("@at_nom", SqlDbType.VarChar);
        cmd_sel.Parameters.Add("@at_dir", SqlDbType.VarChar);
        cmd_sel.Parameters.Add("@at_tel", SqlDbType.VarChar);
 
        cmd_sel.Parameters.Add("@msj", SqlDbType.VarChar, 50);
        cmd_sel.Parameters["@msj"].Direction = ParameterDirection.Output;
 
        cmd_sel.Parameters["@at_id_cliente"].Value = Convert.ToDecimal(txtBusCC.Text);
        cmd_sel.Parameters["@at_mod_id_cliente"].Value = Convert.ToString(txtId.Text);
        cmd_sel.Parameters["@at_nom"].Value = Convert.ToString(txtNom.Text);
        cmd_sel.Parameters["@at_dir"].Value = Convert.ToString(txtDir.Text);
        cmd_sel.Parameters["@at_tel"].Value = Convert.ToString(txtTel.Text);
        cmd_sel.Parameters["@msj"].Value = null;
 
 
        cn.Open();
        cmd_sel.ExecuteNonQuery();
        SqlDataReader reader = cmd_sel.ExecuteReader();
 
        lblEstado.Text = Convert.ToString(cmd_sel.Parameters["@msj"].Value);
 
        this.cargardatos();
 
    }
}
Default.aspx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
 
<!DOCTYPE html>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
        .auto-style1 {
            width: 78%;
        }
        .auto-style2 {
            width: 346px;
        }
        .auto-style3 {
            width: 366px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
         <h4>Insertar datos con procedimiento almacenado:</h4>
        <br />
        <asp:GridView ID="GridView1" runat="server"></asp:GridView>
         <br />
         <table class="auto-style1">
             <tr>
                 <td class="auto-style2">
                     <asp:Label ID="Label5" runat="server" Text="Ingrese el número de cédula a buscar"></asp:Label>
                 </td>
                 <td class="auto-style3">
                     <asp:TextBox ID="txtBusCC" runat="server"></asp:TextBox>
                 </td>
             </tr>
             <tr>
                 <td class="auto-style2">
                     <asp:Label ID="Label1" runat="server" Text="Cédula:"></asp:Label>
                 </td>
                 <td class="auto-style3">
                     <asp:TextBox ID="txtId" runat="server"></asp:TextBox>
                     <%--<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtId" ErrorMessage="Campo requerido" Display="Dynamic"></asp:RequiredFieldValidator>
                     <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtId" ValidationExpression="^\d+$" ErrorMessage="Por favor ingrese sólo números." Display="Dynamic"></asp:RegularExpressionValidator>--%>
                 </td>
             </tr>
             <tr>
                 <td class="auto-style2">
                     <asp:Label ID="Label2" runat="server" Text="Nombre:"></asp:Label>
                 </td>
                 <td class="auto-style3">
                     <asp:TextBox ID="txtNom" runat="server"></asp:TextBox>
                     <%--<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtNom" ErrorMessage="Campo requerido" Display="Dynamic"></asp:RequiredFieldValidator>
                     <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="txtNom" ValidationExpression="^[A-Z0-9 a-z]*$" ErrorMessage="Por favor ingrese sólo letras y espacios en blanco." Display="Dynamic"></asp:RegularExpressionValidator>--%>
                 </td>
             </tr>
             <tr>
                 <td class="auto-style2">
                     <asp:Label ID="Label3" runat="server" Text="Dirección:"></asp:Label>
                 </td>
                 <td class="auto-style3">
                     <asp:TextBox ID="txtDir" runat="server"></asp:TextBox>
                     <%--<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtDir" ErrorMessage="Campo requerido" Display="Dynamic"></asp:RequiredFieldValidator>--%>
                 </td>
             </tr>
             <tr>
                 <td class="auto-style2">
                     <asp:Label ID="Label4" runat="server" Text="Teléfono:"></asp:Label>
 
                 </td>
                 <td class="auto-style3">
                     <asp:TextBox ID="txtTel" runat="server"></asp:TextBox>
                     <%--<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtTel" ErrorMessage="Campo requerido" Display="Dynamic"></asp:RequiredFieldValidator>
                     <asp:RegularExpressionValidator ID="RegularExpressionValidator3" runat="server" ControlToValidate="txtTel" ValidationExpression="^\+?\d{1,3}?[- .]?\(?(?:\d{2,3})\)?[- .]?\d\d\d[- .]?\d\d\d\d$" ErrorMessage="Por favor ingrese un número telefónico válido." Display="Dynamic"></asp:RegularExpressionValidator>--%>
                 </td>
             </tr>
             <tr>
                 <td class="auto-style2">
                     <asp:Button ID="btnBuscar" runat="server" OnClick="btnBuscar_Click" Text="Buscar" Width="87px" />
                 </td>
                 <td class="auto-style3">
                     <asp:Label ID="lblEstado" runat="server"></asp:Label>
                 </td>
             </tr>
             <tr>
                 <td class="auto-style2">
                     <asp:Button ID="btnActualizar" runat="server" OnClick="btnActualizar_Click" Text="Actualizar" />
                 </td>
                 <td class="auto-style3">
                     &nbsp;</td>
             </tr>
             <tr>
                 <td class="auto-style2">
                     &nbsp;</td>
                 <td class="auto-style3">
                     &nbsp;</td>
             </tr>
             <tr>
                 <td class="auto-style2">
                     &nbsp;</td>
                 <td class="auto-style3">
                     &nbsp;</td>
             </tr>
         </table>
         <br />
        <br />
 
    </div>
    </form>
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Condicionar uso de validadores en webform

Publicado por khristian (83 intervenciones) el 12/05/2016 20:49:34
Deshabilitalos por código... ya sea en servidor o cliente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Reinaldo

Condicionar uso de validadores en webform

Publicado por Reinaldo (3 intervenciones) el 13/05/2016 03:36:06
Hola, gracias por su ayuda, voy a probar deshabilitando los controles según el evento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Condicionar uso de validadores en webform

Publicado por Edgar Giovanni Andrade Santamaría (2 intervenciones) el 27/05/2016 00:21:15
que onda..... tengo esto. Espero que te sirva

Suerte.....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
protected void CustomValidator1_ServerValidate(object source,
    ServerValidateEventArgs args)
{
    try
    {
        DateTime.ParseExact(args.Value, "m/d/yyyy",
            System.Globalization.DateTimeFormatInfo.InvariantInfo);
        args.IsValid = true;
    }
    catch
    {
       args.IsValid = false;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Condicionar uso de validadores en webform

Publicado por Daniel Alejandro Rosas Vazquez (7 intervenciones) el 27/05/2016 06:14:33
Hola que tal podrías ocupar una variable temporal que te sirva para saber el tipo de acción así cuando esa variable vaya llena se habilite el botón de Actualizar y cuando este vacía te sirva para Insertar

1
2
3
4
5
6
7
8
9
10
11
12
public void setInformacion(int _id)
{
	if (_id == 0)
	{
		this.lblAccion.Text = "[AGREGAR]";
	}
	else
	{
		this.lblAccion.Text = "[EDITAR]";
		this.btnGenerar.Enabled = false;
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar