¿Cómo bloquear el botón de regresar del navegador con javascript?

El siguiente código sirve para que puedas bloquear desde una web por medio de javascript el botón de regresar que tiene el navegador.

El código funciona con Chrome, Firefox, Edge, Opera (quizá con otros navegador, pero con estos lo probe).

Solo basta que pongan las 3 líneas siguientes al finalizar de cargar su DOM.


window.location.hash="no-back-button";
window.location.hash="Again-No-back-button";//esta linea es necesaria para chrome
window.onhashchange=function(){window.location.hash="no-back-button";}

Video demostrándolo

¿Cómo insertar miles de registros con Entity Framework? C# .Net

En el siguiente video te explico una manera correcta de insertar miles de registros utilizando Entity Framework.

Aprende Entity Framework en 10 minutos


int numeroLotes = 1000;

using (var db = new pruebaEntities())
{
      for (int i = 0; i < 4000; i++)
      {
           var oNumber = new numbers();
           oNumber.number = i;
           oNumber.date = DateTime.Now;

           db.numbers.Add(oNumber);

           if(i%numeroLotes==0)
                 db.SaveChanges();

           }

           db.SaveChanges();
       }
}

Leer archivo de Excel en C# .Net sin utilizar Librerías de office #spreadsheetlight

En este video te muestro como leer un archivo de Excel desde C# .Net y guardarlo en una base de datos sin utilizar las librerías de Office.

Utilizaremos una librería creada por el MIT llamada spreadsheetlight

Crear archivo de excel con spreadsheetlight: https://www.youtube.com/watch?v=NlTv8Xv7cW0

Aprende entity framework en 10 minutos: https://www.youtube.com/watch?v=6nT-RjMEG0o


string path = @"C:\turuta\miexcel.xlsx";
SLDocument sl = new SLDocument(path);

using (var db= new pruebaEntities()) {

    int iRow = 2;
    while (!string.IsNullOrEmpty(sl.GetCellValueAsString(iRow, 1)))
    {
          string codigo = sl.GetCellValueAsString(iRow, 1);
          string nombre = sl.GetCellValueAsString(iRow, 2);
          int edad = sl.GetCellValueAsInt32(iRow, 3);

          var oMiExcel = new miexcel();
          oMiExcel.codigo = codigo;
          oMiExcel.nombre = nombre;
          oMiExcel.edad = edad;

          db.miexcel.Add(oMiExcel);
          db.SaveChanges();

          iRow++;
      }

}

¿Cómo enviar un filtro global al grid de kendo en php? #telerik

Hago esta entrada ya que no encontré información por ningún lado de cómo hacer una búsqueda que quede fija en el grid de kendo cuando se está utilizando php.

Esto es necesario cuando deseamos que nuestro grid solo muestre cierta información y no toda la que contiene la tabla, por ejemplo los registros que solo le pertenecen a un usuario o cuando deseamos aplicar un filtro entre 2 fechas.

A continuación explico cómo es posible filtrar d la siguiente forma:


//datasource
$dataSource = new \Kendo\Data\DataSource();

//tenemos que crear un objeto tipo DataSourceFilterItem
$filterItem = new \Kendo\Data\DataSourceFilterItem();
//le asignamos el nombre de nuestro campo en la tabla, en este caso es idUsuario
$filterItem->field('idUsuario');
//le proporcionamos el operador a utilizar, en este caso es igual
$filterItem->operator('eq');
//le asignamos el valor, filtrara por el valor idUsuario=1
$filterItem->value(1);

//utilizamos el metodo addFilterItem para asignar nuestro filtro.
//este método puede recibir un arreglo de filtros tambien
$dataSource->addFilterItem($filterItem);

Esta solución funciona para cualquier DataSource de kendo que se utilice, ya sea para autocompletar, combobox, grid etc.

Conectar Arduino con C# .Net y Prender un LED

Este es el primer video que hago con C# y Arduino, te mostrare cómo es posible conectar de manera fácil Arduino al lenguaje de programación C# .Net, y también te mostrare como puedes programar y subir tu código a Arduino. Al final prenderemos un Led desde un botón en un formulario hecho con C# en Windows form.


const int pinLED = 13;

void setup()
{
   Serial.begin(9600);
   pinMode(pinLED, OUTPUT);
}

void loop() {
   if (Serial.available() > 0)
   {
      int option = Serial.read();
      //@ de encendido
      if (option == '@')
      {
         digitalWrite(pinLED, HIGH);
      }
      //a de apagado
      if (option == '$')
      {
         digitalWrite(pinLED, LOW);
      }
   }
}

Clase en C# .Net para convertir una cantidad monetaria en letra.

Comparto una clase que sirve para convertir un número decimal a una cantidad en letra.

Es decir si queremos convertir el numero 50.56 nos daría como resultado “Cincuenta pesos 56/100 M.N”.

La clase está diseñada para mostrar cantidades monetarias en dólares, euros y pesos mexicanos, pero no es difícil modificar para la moneda que se desee.


public class Moneda
    {
        private String[] UNIDADES = { "", "un ", "dos ", "tres ", "cuatro ", "cinco ", "seis ", "siete ", "ocho ", "nueve " };
        private String[] DECENAS = {"diez ", "once ", "doce ", "trece ", "catorce ", "quince ", "dieciseis ",
        "diecisiete ", "dieciocho ", "diecinueve", "veinte ", "treinta ", "cuarenta ",
        "cincuenta ", "sesenta ", "setenta ", "ochenta ", "noventa "};
        private String[] CENTENAS = {"", "ciento ", "doscientos ", "trecientos ", "cuatrocientos ", "quinientos ", "seiscientos ",
        "setecientos ", "ochocientos ", "novecientos "};

        private Regex r;

        public String Convertir(String numero, bool mayusculas,string moneda="PESOS")
        {

            String literal = "";
            String parte_decimal;
            //si el numero utiliza (.) en lugar de (,) -> se reemplaza
            numero = numero.Replace(".", ",");

            //si el numero no tiene parte decimal, se le agrega ,00
            if (numero.IndexOf(",") == -1)
            {
                numero = numero + ",00";
            }
            //se valida formato de entrada -> 0,00 y 999 999 999,00
            r = new Regex(@"\d{1,9},\d{1,2}");
            MatchCollection mc = r.Matches(numero);
            if (mc.Count > 0)
            {
                //se divide el numero 0000000,00 -> entero y decimal
                String[] Num = numero.Split(',');

                string MN = " M.N.";
                if (moneda != "PESOS")
                    MN = "";

                //de da formato al numero decimal
                parte_decimal =moneda+" "+ Num[1] + "/100"+MN;
                //se convierte el numero a literal
                if (int.Parse(Num[0]) == 0)
                {//si el valor es cero
                    literal = "cero ";
                }
                else if (int.Parse(Num[0]) > 999999)
                {//si es millon
                    literal = getMillones(Num[0]);
                }
                else if (int.Parse(Num[0]) > 999)
                {//si es miles
                    literal = getMiles(Num[0]);
                }
                else if (int.Parse(Num[0]) > 99)
                {//si es centena
                    literal = getCentenas(Num[0]);
                }
                else if (int.Parse(Num[0]) > 9)
                {//si es decena
                    literal = getDecenas(Num[0]);
                }
                else
                {//sino unidades -> 9
                    literal = getUnidades(Num[0]);
                }
                //devuelve el resultado en mayusculas o minusculas
                if (mayusculas)
                {
                    return (literal + parte_decimal).ToUpper();
                }
                else
                {
                    return (literal + parte_decimal);
                }
            }
            else
            {//error, no se puede convertir
                return literal = null;
            }
        }

        /* funciones para convertir los numeros a literales */

        private String getUnidades(String numero)
        {   // 1 - 9
            //si tuviera algun 0 antes se lo quita -> 09 = 9 o 009=9
            String num = numero.Substring(numero.Length - 1);
            return UNIDADES[int.Parse(num)];
        }

        private String getDecenas(String num)
        {// 99
            int n = int.Parse(num);
            if (n < 10) {//para casos como -> 01 - 09
                return getUnidades(num);
            }
            else if (n > 19)
            {//para 20...99
                String u = getUnidades(num);
                if (u.Equals(""))
                { //para 20,30,40,50,60,70,80,90
                    return DECENAS[int.Parse(num.Substring(0, 1)) + 8];
                }
                else
                {
                    return DECENAS[int.Parse(num.Substring(0, 1)) + 8] + "y " + u;
                }
            }
            else
            {//numeros entre 11 y 19
                return DECENAS[n - 10];
            }
        }

        private String getCentenas(String num)
        {// 999 o 099
            if (int.Parse(num) > 99)
            {//es centena
                if (int.Parse(num) == 100)
                {//caso especial
                    return " cien ";
                }
                else
                {
                    return CENTENAS[int.Parse(num.Substring(0, 1))] + getDecenas(num.Substring(1));
                }
            }
            else
            {//por Ej. 099
                //se quita el 0 antes de convertir a decenas
                return getDecenas(int.Parse(num) + "");
            }
        }

        private String getMiles(String numero)
        {// 999 999
            //obtiene las centenas
            String c = numero.Substring(numero.Length - 3);
            //obtiene los miles
            String m = numero.Substring(0, numero.Length - 3);
            String n = "";
            //se comprueba que miles tenga valor entero
            if (int.Parse(m) > 0)
            {
                n = getCentenas(m);
                return n + "mil " + getCentenas(c);
            }
            else
            {
                return "" + getCentenas(c);
            }

        }

        private String getMillones(String numero)
        { //000 000 000
            //se obtiene los miles
            String miles = numero.Substring(numero.Length - 6);
            //se obtiene los millones
            String millon = numero.Substring(0, numero.Length - 6);
            String n = "";
            if (millon.Length > 1)
            {
                n = getCentenas(millon) + "millones ";
            }
            else
            {
                n = getUnidades(millon) + "millon ";
            }
            return n + getMiles(miles);
        }

    }

Y se utiliza así:


//creamos el objeto
Moneda oMoneda = new Moneda();

//primer parametro es la cantidad en string
//segundo parametro es si queremos que sea mayuscula
//tercer parametro la moneda
string resultado = oMoneda.Convertir("50.56", true,"PESOS"));

Llenar una cadena a una longitud especificada con un carácter repetido en C# .Net

Esta función sirve para llenar una cadena la cual necesitemos que tenga a la izquierda un carácter repetidamente hasta llegar a una longitud, por ejemplo si deseamos tener cadenas con una longitud de 5 caracteres y con el formato 00001, esta función podría funcionar para llenar un número que nos llegue como 1 y ponerle los 0 a la izquierda hasta que sea 5 su longitud.

La función recibe 3 parámetros, el primero es el carácter para rellenar, el segundo es la longitud deseada y el tercer es la cadena original. Nos regresara la cadena rellenada. La clase es la siguiente:


public class StringTool
{

        public static string FillCharacterStart(char character, int length,string word )
        {
            string result = word;
            for (int i=word.Length;i&lt;length;i++)
            {
                result = character + result;
            }

            return result;
        }
}

Y así se utiliza:


string cadena = StringTool.FillCharacterStart('0', 5, "1");

//resultado: 00001

Crear archivo de Excel en C# .Net sin utilizar Librerías de office #spreadsheetlight #DataTable

En este video te muestro como crear un archivo de Excel desde C# .Net sin utilizar las librerías de Office.

Utilizaremos una librería creada por el MIT llamada spreadsheetlight

Sitio web de spreadsheetlight: http://spreadsheetlight.com/sample-code/


string pathFile = AppDomain.CurrentDomain.BaseDirectory + "miExcel.xlsx";

SLDocument oSLDocument = new SLDocument();

System.Data.DataTable dt = new System.Data.DataTable();

//columnas
dt.Columns.Add("Nombre",typeof(string));
dt.Columns.Add("Edad",typeof(int));
dt.Columns.Add("Sexo",typeof(string));

//registros , rows
dt.Rows.Add("Pepe",19,"Hombre");
dt.Rows.Add("Ana",20,"Mujer");
dt.Rows.Add("Perla",30,"Mujer");

oSLDocument.ImportDataTable(1, 1, dt, true);

oSLDocument.SaveAs(pathFile);

¿Cómo crear el xml 3.3 con impuestos federales? cfdi C# .Net? | catálogos | SAT #1

Te invito a que te suscribas a mi canal de youtube para mas videos interesantes sobre programación.

En este primer video te mostrare como agregar un impuesto al concepto y al nodo principal comprobante.

Descargar código: Clic aquí

Curso facturación electrónica básico: https://www.youtube.com/watch?v=XlTz0NRQLm4&list=PLWYKfSbdsjJg-yuu9K53GwthkEE8lkXDL

Curso creación pdf a partir de xml 3.3: https://www.youtube.com/watch?v=gHSC8GrEC5g&list=PLWYKfSbdsjJi6sOjwqZqotNnpWf7Jl_me

Catálogos mysql: https://www.youtube.com/watch?v=ZpHROAfzxsM