martes, 26 de enero de 2016

C# - Tabs Jquery

<%@ Page Title="Adm. Pac" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
    CodeBehind="MainPac.aspx.cs" Inherits="LeaseOperWeb.Paginas.AdmContratos.AdmPac.MainPac" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    <link href="../../../css/style-css.css" rel="stylesheet" type="text/css" />
    <!--#include file="~/Scripts/jquery.includes.htm"-->
    <script type="text/javascript">
        $(function () {
            $("#tabs").tabs();
        });
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="HeaderContent" runat="server">
    <div id="tabs">
        <ul>
            <li><a href="TabUniverso.aspx">Universo</a></li>
            <li><a href="TabCarga.aspx">Carga</a></li>
            <li><a href="TabRendicion.aspx">Rendición</a></li>
            <li><a href="TabRechazos.aspx">Rechazos</a></li>
            <li><a href="TabParametros.aspx">Parámetros</a></li>
        </ul>
    </div>
</asp:Content>

domingo, 24 de enero de 2016

C# - checkbox dentro de una grilla.

Columna dentro de la grilla.- (.aspx)

 <dx:GridViewDataColumn Caption="" VisibleIndex="0" Width="80px">
                    <DataItemTemplate>
                        <div align="center">
                            <dx:ASPxCheckBox ID="chkSelected" ClientInstanceName="chkSelected" runat="server"
                                AutoPostBack="false">
                            </dx:ASPxCheckBox>
                        </div>
                    </DataItemTemplate>
                    <EditFormSettings Visible="False" />
                </dx:GridViewDataColumn>

Busqueda de filas con el check en true(.cs)

  for (int i = 0; i < grvProductos.VisibleRowCount; i++)
                {
                    //recorro grilla buscando los checknox en true
                    var column = grvProductos.Columns[0] as GridViewDataColumn;
                    var ctrl = grvProductos.FindRowCellTemplateControl(i, column, "chkSelected") as ASPxCheckBox;
                    if (ctrl != null && ctrl.Checked)
                    {

                        DataRow row = grvProductos.GetDataRow(i);
                        fila["codigo_producto"] = row.ItemArray[0];
                        fila["descripcion"] = row.ItemArray[1];
                        fila["precio_venta"] = row.ItemArray[2];
                        fila["descuento_porcentaje"] = row.ItemArray[3];
                        fila["descuento_pesos"] = row.ItemArray[4];

                        dt.Rows.Add(fila);
                    }
                }


C# - Crear DataTable

DataTable tabla = new DataTable();

//columnas
tabla.Columns.Add("Columna1");
tabla.Columns.Add("Columna2");

//filas
DataRow fila = tabla.NewRow();

fila["Columna1"] = "Dato1";
fila["Columna2"] = "Dato2";

//se agrega fila
tabla.Rows.Add(fila);

jueves, 21 de enero de 2016

SQL - Tabla Type

*Para enviar un DataTable desde el APP a SQL y tratarlo directamente.

/****************************CREA TABLA TYPE******************************/

USE miBD

CREATE TYPE [dbo].CargaMITABLAValidaType AS TABLE(
    [periodo] [int]  NULL,
[tipo_registro] [int]  NULL,
[fecha_proceso] [smalldatetime] NOT NULL
)

/**************************FIN CREA TABLA TYPE******************************/


/*************************SP QUE USA TABLA TYPE*************************/


/****** Object:  StoredProcedure [dbo].[pa_lo_valida_edicion_c13]    Script Date: 01/20/2016 18:39:43 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

/* =============================================
-- Author: JC
-- Create date: 20-01-2016
-- Description: Valida que los campos ingresados en informe

declare @cod_error INT
declare @desc_error varchar(500)
declare @miTabla CargaMITABLAValidaType
insert into @miTabla VALUES (201601,2,'20150102')
--select * FROM @miTabla
exec pa_lo_valida_edicion @miTabla , @cod_error OUTPUT, @desc_error OUTPUT
--select @cod_error, @desc_error


-- =============================================
*/
CREATE PROCEDURE [dbo].[pa_lo_valida_edicion]
@miTabla AS CargaMITABLAValidaType  READONLY ,
@cod_error INT OUTPUT ,
@desc_error VARCHAR(500) OUTPUT
AS
BEGIN
--variables de recorido
DECLARE @periodo [int] ,
@tipo_registro [int] ,
@fecha_proceso [smalldatetime]


--tabla de validaciones
CREATE TABLE #validaciones
(
 [periodo] [int] NOT NULL ,
 [tipo_registro] [int] NOT NULL ,
 [fecha_proceso] [smalldatetime] NOT NULL ,

)
--cursor de recorrido - VALIDACIONES
DECLARE c_valida CURSOR LOCAL
FOR
SELECT periodo ,
tipo_registro ,
fecha_proceso ,
FROM @miTabla

OPEN c_valida
FETCH c_valida INTO @periodo, @tipo_registro,@fecha_proceso
--
WHILE ( @@FETCH_STATUS = 0 )
BEGIN -- Inicio Ciclo

-- Seteo varaiables con valores OK
SELECT @cod_error = 0 ,
@desc_error = 'OK'
--Validaciones
IF ( @periodo <> '2016'
  )
BEGIN
SELECT @cod_error = 1 ,
@desc_error = 'Mensaje de Error Aquí'
END



-- fin ciclo
INSERT INTO #validaciones
VALUES ( @periodo, @tipo_registro, @fecha_proceso,
@cod_error,
 @desc_error )


FETCH c_valida INTO @periodo, @tipo_registro,
@fecha_proceso
END
CLOSE c_valida
DEALLOCATE c_valida


SELECT error,desc_error FROM #validaciones

END

GO





/*************************FIN SP QUE USA TABLA TYPE*************************/


/*************************DAC llamada desde .NET C#*************************/

public DataTable ValidaEdicionC13(DataTable dt)
        {
            Database db = DatabaseFactory.CreateDatabase("LeaseOper"); //enterprise library 5.0
            var ds = new DataSet();
            var retorno = false;
            var dataTable = new DataTable();
            try
            {
                using (var cnxx = new SqlConnection(db.ConnectionString))
                {
                    SqlCommand cmd = new SqlCommand("pa_lo_valida_edicion", cnxx);
                    cmd.CommandType = CommandType.StoredProcedure;

                    SqlParameter tvparam = cmd.Parameters.AddWithValue("@miTabla", dt);

                    tvparam.SqlDbType = SqlDbType.Structured;
               
                    db.AddOutParameter(cmd, "@cod_error", DbType.Int32, int.MaxValue);
                    db.AddOutParameter(cmd, "@desc_error", DbType.String, int.MaxValue);

                    cmd.Connection.Open();
                    SqlDataAdapter theDataAdapter = new SqlDataAdapter(cmd);

                    //los rescato pero no los estoy usando
                    var codError = db.GetParameterValue(cmd, "@cod_error");
                    var desError = db.GetParameterValue(cmd, "@desc_error");

                    theDataAdapter.Fill(ds);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            if (ds.Tables[0].Rows.Count > 0)
                return ds.Tables[0];
            return dataTable;
        }

/*************************.CS llamada desde .NET C# con JQUERY*************************/
 [WebMethod]
        public static string GeneraCuponera(object rows, string idDoc)
        {
            try
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("operacion", typeof(decimal));
                dt.Columns.Add("cod_material", typeof(int));

                string json = new JavaScriptSerializer().Serialize(rows);
                dynamic selectedRows = JsonConvert.DeserializeObject(json);

                foreach (dynamic rowGrid in selectedRows)
                {
                    DataRow rowDt = dt.NewRow();
                    rowDt["operacion"] = Convert.ToDecimal(rowGrid.operacion);
                    rowDt["cod_material"] = Convert.ToDecimal(rowGrid.cod_material);

                    dt.Rows.Add(rowDt);

                }
                var retorno = new BcCuponeras().GeneraCuponera(dt);
                return JsonConvert.SerializeObject(retorno);
            }
            catch (Exception ex)
            {
                var err = JsonConvert.SerializeObject(ex.Message);
                return err;
            }

        }


miércoles, 20 de enero de 2016

C# - retorno de DataSet desde consulta al Entity Framework / Convertir lista a DataTable

  public DataSet SelectbyPeriodoExcel(int periodo, ref string msj)
        {
            var ds = new DataSet();
            DataTable dt = new DataTable();
            try
            {
                using (var context = new leaOperModel())
                {
                    var dtContex = context.t_c13.Where(p => p.periodo == periodo).ToList();
                    // obj.AddRange(dtContex.Select(C13Be.DbToBe));
                    dt = ConvertToDataTable(dtContex);
                    ds.Tables.Add(dt);
                }
            }
            catch (Exception ex)
            {
                msj = ex.Message;
            }
            return ds;
            //return obj.ToList();
        }



 public DataTable ConvertToDataTable<T>(IList<T> data)
        {
            PropertyDescriptorCollection properties =
               TypeDescriptor.GetProperties(typeof(T));
            DataTable table = new DataTable();
            foreach (PropertyDescriptor prop in properties)
                table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            foreach (T item in data)
            {
                DataRow row = table.NewRow();
                foreach (PropertyDescriptor prop in properties)
                    row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
                table.Rows.Add(row);
            }
            return table;

        }

C# - Remover columnas de un DataTable

 DataTable dt = ds.Tables[0];

                     if (dt.Columns.Contains("periodo"))
                    dt.Columns.Remove("periodo");

                     if (dt.Columns.Contains("EntityState"))
                    dt.Columns.Remove("EntityState");

                     if (dt.Columns.Contains("EntityKey"))
                    dt.Columns.Remove("EntityKey");

lunes, 11 de enero de 2016

C# - Solo letras con control textbox asp y javascript


1. Método solo letras.


//Solo número
 function SoloLetras(e) {
                key = e.keyCode || e.which;
                tecla = String.fromCharCode(key).toLowerCase();
                letras = " áéíóúabcdefghijklmnñopqrstuvwxyz";
              //  letras = " áéíóúabcdefghijklmnñopqrstuvwxyz0123456798-"; pueden ser letras o cualquier caracter
                especiales = "8-37-39-46";

                tecla_especial = false;
                for (var i in especiales) {
                    if (key == especiales[i]) {
                        tecla_especial = true;
                        break;
                    }
                }

                if (letras.indexOf(tecla) == -1 && !tecla_especial) {
                    return false;
                }
            }

2. Agregar la function como atributo en el control requerido en evento Page_Init() o Page_Load() de la página, como en el ejemplo de la Imagen. (poner SoloLetras(event))



 protected void Page_Init(object sender, EventArgs e)
    {
        this.txtRut.Attributes.Add("OnKeyPress", "return SoloLetras(event)");
    }



jueves, 7 de enero de 2016

JQuery - Tag

El tag:

 <!--#include file="~/Scripts/jquery.includes.htm"-->

siempre debe estar incluido dentro de la página .asxp para poder hacer referencia a las bibliotecas Jquery.