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:
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
<%@ 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">
</td>
</tr>
<tr>
<td class="auto-style2">
</td>
<td class="auto-style3">
</td>
</tr>
<tr>
<td class="auto-style2">
</td>
<td class="auto-style3">
</td>
</tr>
</table>
<br />
<br />
</div>
</form>
</body>
</html>