Lector de QR de facturas y boletas electrónicas

La siguiente aplicación nos permite recuperar información mediante la lectura de QR de una factura o boleta electrónica. Play store   @cville07 Lector de QR para facturas y boletas electrónicas. Descárgalo de Play store https://play.google.com/store/apps/details?id=com.qrscannerinvoice #qr #facturacionelectronicaperu #facturacionelectronica #ruwaytech #peru🇵🇪 #sunat #impuestos #impuestosperu ♬ cool electro house(1378636) - S_R

Session, List, Class y Encapsulamiento


En la siguiente guia vamos hacer uso de Session, List en ASPX.

Creamos dos formularios, le denominamos formulario FrmPadre.aspx y FrmHijo.aspx.

La secuencia de funcionamiento del ejercicio con el uso de tipo de variable session consiste en que desde el formulario padre al realizar click en un boton nos muestre el formulario hijo; en el formulario hijo tenga una opción de búsqueda, los resultados de la búsqueda se muestren en un control GridView y al seleccionar una fila nos recupere los datos para mostrar en un control de Gridview en formulario padre.

Realizamos los siguientes pasos.

Agregamos en la parte cabecera del formulario padre el código  javascript para poder abrir el formulario hijo.


function abrir() {
window.open("Frmhijo.aspx", "Vetana Buscar", "width=400,height=400");
}


y llamamos la funcion javascript abrir desde un boton

Los datos para realizar búsqueda lo almacenamos en un List. Para ello creamos dos clases uno general para llenar los datos y otra clase de nombre alumno para crear sus encapsulados.
Clase CGeneral


public class CGeneral
{
public List Alumnos {get; set; }

public CGeneral() {

Alumnos = new List {
new Alumno{Codigo="081027",Nombres="Cristian", Apellidos="Villegas" },
new Alumno{Codigo="071021",Nombres="Richar",Apellidos="Salas"},
new Alumno{Codigo="091022",Nombres="Salcedo",Apellidos="Pinedo"}
};

}

public Alumno BuscarporCodigo(string codigo) {
foreach (var item in Alumnos){
if (item.Codigo.Equals(codigo))
return item;
}
return null;
}


}

Clase Alumno
En esta clase vemos el encapsulamiento.
public class Alumno {

public Alumno() {

}

private String codigo;

public String Codigo
{
get { return codigo; }
set { codigo = value; }
}

private String nombres;

public String Nombres
{
get { return nombres; }
set { nombres = value; }
}

private String apellidos;

public String Apellidos
{
get { return apellidos; }
set { apellidos = value; }
}
}

Ahora en el formulario hijo el diseño nos tiene que quedar de esta forma:

Para mostrar los resultados de la búsqueda programamos en el evento click del boton buscar.

protected void Btnbuscar_Click(object sender, EventArgs e)
{
CGeneral objg = new CGeneral();
if (txtbuscar.Text.Trim() == "")
grvdatadetalle.DataSource = objg.Alumnos;
else {
List list = new List();
list.Add(objg.BuscarporCodigo(txtbuscar.Text));
grvdatadetalle.DataSource = list;

}

grvdatadetalle.DataBind();
}


Para recuperar los valores seleccionados de una fila programamos en el evento de RowCommand del gridview y
los valores asignamos en variable de session con el fin de recuperar esos valores en el formulario padre.

La ultima linea de código nos permite ejecutar códigos javascript; en el cual se ve que se llama a una función cerrar. A continuación implementamos la función cerrar.

protected void grvdatadetalle_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (!e.CommandArgument.Equals("")) {
if (e.CommandName.Equals("Select")) {
int indice = int.Parse(e.CommandArgument.ToString());
String[] valor= new String[3];
valor[0] = grvdatadetalle.Rows[indice].Cells[1].Text;
valor[1] = grvdatadetalle.Rows[indice].Cells[2].Text;
valor[2] = grvdatadetalle.Rows[indice].Cells[3].Text;
Session["valores"] = valor;
ClientScript.RegisterStartupScript(this.GetType(), "key", "cerrar()", true);
}
}
}


El reload realiza la recarga de la pagina de donde se lanzo el popup.

function cerrar() {
window.opener.document.location.reload();
window.close();
}

Para  concluir nos ubicamos en el evento Page_Load del formulario padre y programamos para recuperar el valor seleccionado en el formulario hijo y finalmente mostrar en el formulario padre.
protected void Page_Load(object sender, EventArgs e)
{
if (Session["valores"] != null) {
List list = new List();

if (Session["data"] != null) {
list =(List)Session["data"];
}

Alumno tbalumno = new Alumno();
String[] valores=(String[])Session["valores"];

tbalumno.Codigo = valores[0];
tbalumno.Nombres = valores[1];
tbalumno.Apellidos = valores[2];
list.Add(tbalumno);

Session["data"] = null;
Session.Add("data", list);
grvdata.DataSource = list;
grvdata.DataBind();
Session["valores"] = null;
}
}
Al final se muestra como en la siguiente imagen:


Enlace de descarga
https://www.dropbox.com/s/dfdcylhwrr44b2q/DatosSession.zip

Comentarios

Entradas populares de este blog

Arbol de n Ramas

Lector de QR de facturas y boletas electrónicas

Crear proyecto Angular