lunes, 9 de septiembre de 2013

Tips Para C#

Para todos los programadores adictos a las Grid, aqui les traigo un metodo sencillo de agregar Items.

  private void AgregarArticulo() {
        string estado = hidEstadoArticulo.Value;
        List<movimiento_detalle> lista = ActualizarGridArticulo(estado);
        if (estado.Equals("N"))
        {
            string[] patron = { "<@ARTICULO@>" };
            string[] datos = hidListaArticulo.Value.Split(patron, System.StringSplitOptions.None);
            foreach (string s in datos)
            {
                if (s != "")
                {
                    movimiento_detalle item = ObtenerItemArticulo(s);
                    if (item != null)
                    {

                        lista.Add(item);
                    }
                }
            }
        }
        FillGridDetalle(lista);
        hidAccion.Value = "";
        hidEstadoArticulo.Value = "";
        hidFilaEditar.Value = "";
    }

    private movimiento_detalle ObtenerItemArticulo(string articulo_info)
    {
        if (articulo_info == "") return null;
        movimiento_detalle item = new movimiento_detalle();
        string[] datos = articulo_info.Split('|');
        int i = -1;
        ++i;
        item.Id_articulo = Convert.ToInt32(datos[i]);
        ++i;
        item.Articulo_des = datos[i];
        return item;
    }

    private List<movimiento_detalle> ActualizarGridArticulo(string estado)
    {
        List<movimiento_detalle> lista = new List<movimiento_detalle>();
        int filas = rgDetalle.Rows.Count;
        for (int i = 0; i < filas; i++)
        {
            GridViewRow r = rgDetalle.Rows[i];
            if (r.RowType == DataControlRowType.DataRow)
            {
                Label lblIdDetalle = (Label)r.FindControl("lblIdDetalle");
                movimiento_detalle item = new movimiento_detalle();
                if (estado.Equals("D") && hidFilaEditar.Value.ToString().Equals(lblIdDetalle.Text)) item = null;
                else
                {
                    int id_articulo = Convert.ToInt32(((Label)r.FindControl("lblIDArticulo")).Text);
                    item.Articulo_des = ((Label)r.FindControl("lblArticuloDes")).Text;
                    item.Cantidad = Convert.ToInt32(((TextBox)r.FindControl("txtCantidad")).Text.Trim());
                }
                if (item != null) lista.Add(item);
            }
        }
        return lista;
    }

Y para recuperar los datos:

    private SCM_ORDEN_COMPRA_DETALLEList ObtenerDatosListaArticulo(int id_empresa)
    {
        SCM_ORDEN_COMPRA_DETALLEList lista = new SCM_ORDEN_COMPRA_DETALLEList();
        int filas = dgArticulo.Rows.Count;
        int numero_fila = 0;
        for (int i = 0; i < filas; i++)
        {
            GridViewRow r = dgArticulo.Rows[i];
            if (r.RowType == DataControlRowType.DataRow)
            {
                TextBox txtMontoUnitario = (TextBox)r.FindControl("txtMontoUnitario");
                TextBox txtCantidadSolicitada = (TextBox)r.FindControl("txtCantidadSolicitada");
                TextBox txtReferencia = (TextBox)r.FindControl("txtReferencia");

                DropDownList ddlCentroActividad = (DropDownList)r.FindControl("ddlCentroActividad");
                DropDownList ddlUnidadMedida = (DropDownList)r.FindControl("ddlUnidadMedida");
                DropDownList ddlIGV = (DropDownList)r.FindControl("ddlIGV");
                Label lblIDArticulo = (Label)r.FindControl("lblIDArticulo");
                Label lblIDActivo = (Label)r.FindControl("lblIDActivo");
                SCM_ORDEN_COMPRA_DETALLE item = new SCM_ORDEN_COMPRA_DETALLE();
                int id_tipo_detalle = Funciones.CheckInt(((Label)r.FindControl("lblIdTipoDetalle")).Text);
                int id_articulo = Funciones.CheckInt(lblIDArticulo.Text);
                int id_activo_fijo = Funciones.CheckInt(lblIDActivo.Text);
                item.ID_TIPO_DETALLE = id_tipo_detalle;
                decimal monto_unitario = Funciones.CheckDecimal(txtMontoUnitario.Text.Trim());
                item.MONTO_UNITARIO_REAL_MN = monto_unitario;
                item.MONTO_UNITARIO_MN = monto_unitar;
                item.REFERENCIA = txtReferencia.Text.Trim().ToUpper();
                item.CON_IGV = ddlIGV.SelectedValue;
                item.ID_EMPRESA = id_empresa;
                item.ID_ORDEN_COMPRA_DETALLE = ++numero_fila;
                lista.Add(item);
            }
        }
        return lista;
    }

Como validar un CheckList en c#

Muchos de nostros hemos tenido alguna vez problemas validando checkList en Javascript, a continuacion les dejo un metodo simple y consiso sobre como hacerlo.

        function Aceptar() {
            var datos = '';
            var lista = '';
            if (validardatos()) {
                var chkList = document.getElementById('chkList');
                var chk = chkList.getElementsByTagName("input");
                for (var i = 0; i < chk.length; i++) {
                    if (chk[i].checked) {
                        datos = chk[i].value;
                        lista = lista + '<@articulo@>' + datos;
                    }
                }
            }
            window.opener.RetornarArticulo(lista);
            window.close();
         }

         function validardatos() {
             var chkList = document.getElementById('chkList');
             var chk = chkList.getElementsByTagName("input");
             for (var i = 0; i  < chk.length; i++ ) {
                 if (chk[i].checked == true) {
                     return true;
                 }
             }
             alert("Seleccione al menos un Articulo");
             return false;
         }

Son dos funciones en Javascript una que valida y otra que envia los datos de las opcviones seleccionadas a la pagina anterior.

domingo, 8 de septiembre de 2013

Para todos los Programadores en C#

Tengan ustedes buenos días,

A continuación les dejo algunas clases para que puedan conectarse a su base de datos sin problemas desde codigo C#.

Conexion.cs


public class Conexion
    {
        static string cadenaConexion = @"Data Source=PC;Initial Catalog=BDD;User ID=sa;Password=****";

        public static string CadenaConexion
        {
            get { return cadenaConexion; }
        }

    }

Luego Procedemos a crear una Clase Métodos, que tendra dentro dos metodos, uno sera para poder hacer referencia a un Store Procedure y el segundo para ejecutar sentencias como insert, delete, update.

Metodos.cs

    public class Metodos
    {
        public static SqlCommand CrearComandoProc()
        {
            string _cadenaConexion = Conexion.CadenaConexion;
            SqlConnection _conexion = new SqlConnection(_cadenaConexion);
            SqlCommand _comando = new SqlCommand("", _conexion);
            _comando.CommandType = CommandType.StoredProcedure;
            return _comando;
        }

        public static int EjecutarComando(SqlCommand comando)
        {
            try
            {
                comando.Connection.Open();
                return comando.ExecuteNonQuery();
            }
            catch { throw; }
            finally
            {
                comando.Connection.Dispose();
                comando.Connection.Close();
            }
        }
    }

Luego de esto solo queda la capa de Presentacion y la Capa de enlace de Datos para que nuestra aplicacion pueda ser utilizada. 
Espero haya servido de ayuda.
Hasta otra oportunidad.