martes, 5 de julio de 2016

Validar el formato de un correo electrónico en C#

Muchas veces tenemos la necesidad de validar en .Net el correo electronico que es ingresado por un usuario en un formulario o sitio web. En este caso se valida mas de un correo separado por punto y coma (;)  e identifica que correo es valido. Si no es valido lo deja en blanco.

ValidarCorreoElectronico("Correoinvalido{{@prueba.com;CorreoValido@hotmail.com"
 
private string ValidarCorreoElectronico(string sCorreoElectronico)
    {
        string sCorreo = string.Empty;

        if (sCorreoElectronico != string.Empty)
        {
            String[] sMail = sCorreoElectronico.Split(new Char[] { ';' });            
            for (int I = 0; I < sMail.Length; I++)
            {
                if (ValidarFormatoCorreo(sMail[I].ToString()))
                {
                    sCorreo = sMail[I].ToString() + ";" + sCorreo;
                }
            }
        }
        if (sCorreo != string.Empty)
            sCorreo = sCorreo.Substring(0, sCorreo.Length - 1);

        return sCorreo;
    }

    private Boolean ValidarFormatoCorreo(String email)
    {
        String expresion;
        expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
        if (Regex.IsMatch(email, expresion))
        {
            if (Regex.Replace(email, expresion, String.Empty).Length == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }

viernes, 22 de abril de 2016

C# Select Distinct en un DataTable II

Existe siempre la necesidad de realizar un Select Distinct a un DataTable cuando las filas están repetidas. En esta ocasión les comparto una nueva solución en .Net C# que permite devolver los resultados con mas de una columna. 

using System.Data;

public DataTable SelectRowDisctinct(DataTable dtData, string sColumnName)
{
 try
 {                
  DataTable distintos = dtData.DefaultView.ToTable(true, sColumnName);
  DataTable dtNew = new DataTable();
  foreach (DataColumn dcName in dtData.Columns)
  {
   dtNew.Columns.Add(new DataColumn(dcName.Caption,dcName.DataType));
  }
   
  foreach (DataRow drRow in distintos.Rows)
  {
   dtNew.ImportRow(dtData.Select(sColumnName + " = '" + drRow[0] + "'")[0]);
  }
  return dtNew;
 }
 catch (Exception ex)
 {
  throw (ex);
 }
}

Espero les pueda servir.
"" Si tienes dudas o quieras ampliar este artículo, lo puedes hacer dejando tus comentarios. Además, si lo consideras interesante puedes compartirlo con amigos y seguidores a través de los botones sociales que aparecen en esta página.""

domingo, 21 de febrero de 2016

Javascript Validar números en Firefox, Chrome, IE

En una publicación anterior, pudimos Validar sólo números en Javascript, la cual nos ha permitido solucionar muchos inconvenientes.

En esta ocasión les quiero compartir una validación de solo números mucho mas completa, es decir contempla navegadores como Chrome, Internet Explorer (IE) y Firefox

A continuación les muestro el código, espero que les ayude.
var nav4 = window.Event ? true : false;
function SoloNumeros(evt) {
    // NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57
    var key = nav4 ? evt.which : evt.keyCode;
    return (key <= 13 || (key >= 48 && key <= 57 || key == 46));
}
Para implementarlo en Asp.Ner C# incluimos nuestro código anterior en un archivo .js y referenciarlo en nuestra pagina .aspx, así:
script src="../Scripts/Utilidad.js" type="text/javascript"></script>

Y para llamar la función la podemos implementar en una caja de texto así:

asp:TextBox ID="txtnFactura" runat="server"  onkeypress="return SoloNumeros(event);"></asp:TextBox>

miércoles, 23 de septiembre de 2015

Como buscar procedimiento almacenado si esta programado como Job

A continuacion podemos ver como buscar un procedimiento almacenado en Sql Server si esta programado como Job:

select sj.*
from msdb.dbo.sysjobs sj
inner join msdb.dbo.sysjobsteps sjs on sj.job_id = sjs.job_id
inner join msdb.dbo.sysjobschedules sjsc on sjs.job_id = sjsc.job_id
where sjs.command like'%Nombreprocedimientoalmacenado%'

miércoles, 26 de agosto de 2015

GridView ASP.Net - Eliminar fila

El siguiente formato HTML consiste en un GridView de ASP.Net con dos columnas BoundField y una columna CommandField así:

<asp:GridView ID="GridView1" CssClass = "Grid" runat="server" OnRowDeleting="OnRowDeleting" AutoGenerateColumns ="false" OnRowDataBound = "OnRowDataBound">
    <Columns>
        <asp:BoundField DataField="Item" HeaderText="Item" />
        <asp:BoundField DataField="Price" HeaderText="Price" />
        <asp:CommandField ShowDeleteButton="True" ButtonType="Button" />
    </Columns>
</asp:GridView>

Dentro del evento de carga de la página , el ASP.Net GridView se rellena usando un DataTable y DataTable se guarda en la variable ViewState.

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Item"), new DataColumn("Price") });
        dt.Rows.Add("Shirt", 450);
        dt.Rows.Add("Jeans", 3200);
        dt.Rows.Add("Trousers", 1900);
        dt.Rows.Add("Tie", 185);
        dt.Rows.Add("Cap", 100);
        dt.Rows.Add("Hat", 120);
        dt.Rows.Add("Scarf", 290);
        dt.Rows.Add("Belt", 150);
        ViewState["dt"] = dt;
        BindGrid();
    }
}
protected void BindGrid()
{
    GridView1.DataSource = ViewState["dt"] as DataTable;
    GridView1.DataBind();
}



Aplicando el cuadro de confirmación JavaScript para GridView CommandField Borrar Button

Dentro del controlador de eventos OnRowDataBound, un bucle se ejecuta en los controles Button del GridView. Si el CommandName del botón es Eliminar continua mostrando el cuadro de confirmación se asignando su atributo OnClic.

protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string item = e.Row.Cells[0].Text;
        foreach (Button button in e.Row.Cells[2].Controls.OfType<Button>())
        {
            if (button.CommandName == "Delete")
            {
                button.Attributes["onclick"] = "if(!confirm('Do you want to delete " + item + "?')){ return false; };";
            }
        }
    }
}
Elimine el ASP.Net GridView Fila usando CommandField y eventos OnRowDeleting

Cuando se hace clic en el botón Eliminar, se ejecuta el controlador de eventos OnRowDeleting. Dentro del controlador de eventos OnRowDeleting, el Índice del GridView fila se determina y se y se utiliza para eliminar la Línea de DataTable. Por último, el DataTable se guarda de nuevo a la ViewState y el GridView está nuevamente poblada.


protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{
    int index = Convert.ToInt32(e.RowIndex);
    DataTable dt = ViewState["dt"] as DataTable;
    dt.Rows[index].Delete();
    ViewState["dt"] = dt;
    BindGrid();
}

viernes, 29 de mayo de 2015

Mantener el valor de un TextBox en TextMode = Password c#, ASP.Net

He tenido la dificultad en Asp.Net, luego de recuperar la contraseña de base de datos y visualizarla en una caja de texto, la cual esta configurada en Modo TextMode Password, ésta no se pueda ver.

<asp:textbox id="txtClave" runat="server" textmode="Password"></asp:textbox>


Cuando el valor se asigna al control, éste no se puede ver y peor aun en el postback de la pagina, pierde el valor.

La solución consiste en asignar el valor que queremos que teme el control como un atributo. Si además queremos que la clave se mantenga entre Postbacks, bastará con que asignemos el valor cada vez que recarga la página:

protected void Page_Load(object sender, EventArgs e)
{
    txtClave.Attributes.Add("value", txtClave.Text);
}

miércoles, 2 de julio de 2014

Como usar los eventos onblur, onfocus, onchance, sobre un TextBox en ASP.Net

Hola como están, espero que bien, hoy quiero compartir un ejemplo muy sencillo de como usar los eventos onblur, onfocus, entre otros sobre un control Textbox en ASP.Net.

Primero creamos una pagina web con una caja de Texto:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Example.aspx.cs" Inherits="Example" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox Id="txtTexto" runat="server"></asp:TextBox>    
    </div>
    </form>
</body>
</html>


Seguidamente creamos un botón asp.net dentro de un <div> oculto así:

<div style="display: none;">
        <asp:button id="btnTextBox" runat="server" onclick="btnTextBox_Click">
</asp:button></div>


Quedando la pagina:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Example.aspx.cs" Inherits="Example" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox Id="txtTexto" runat="server"></asp:TextBox>   
    </div>
   
    <div style="display: none;">
        <asp:button id="btnTextBox" runat="server" onclick="btnTextBox_Click">
    </asp:button></div>
    </form>
</body>
</html>

Ahora en el evento Page_Load de la pagina agregar el atributo al cuadro de texto:

protected void Page_Load(object sender, EventArgs e)
    {
        txtTexto.Attributes.Add("onblur", this.Page.ClientScript.GetPostBackEventReference(this.btnTextBox, ""));
    }

Finalmente agregamos el código en el evento clic de nuestro botón oculto.

protected void btnTextBox_Click(object sender, EventArgs e)
    {
        //Coloque aquí su código para evento onblur
    }

"" Si tienes dudas o quieras ampliar este artículo, lo puedes hacer dejando tus comentarios. Además, si lo consideras interesante puedes compartirlo con amigos y seguidores a través de los botones sociales que aparecen en esta página.""

ENTRADAS POPULARES