miércoles, 23 de julio de 2008

Insertar un Checkbox dentro de un Gridview

Es muy común querer darle mas funcionalidad a nuestro gridview para que sea mas amigable para el usuario. En el gridview podemos insertar cualquier control asp.net a través de un témplate, en nuestro ejemplo vamos a mostrar un ckeckbox par que el usuario note si tiene hijos una persona. Primero crearemos un proyecto web



Luego procedemos a crear una clase Persona, que será con la que poblaremos el gridview.

public class Persona
{
string nombre;
string apellido;
string telefono;
int numeroHijo;
public string Nombre
{
get
{
return nombre;
}
}
public string Apellido
{
get
{
return apellido;
}
}
public string Telefono
{
get
{
return telefono;
}
}
public bool TieneHijo
{
get
{
return numeroHijo != 0;
}
}
public Persona(string pnombre,string papellido,string ptelefono,int pnumeroHijo)
{
nombre = pnombre;
apellido = papellido;
telefono = ptelefono;
numeroHijo = pnumeroHijo;
}


}
Procedemos a crear una pagina aspx webPersona.aspx


Insertamos un gridview para mostrar los datos.




y en el Template ponemos



Fijemonos que en la Propiedad CheckBox le asignamos
DataBinder.Eval(Container.DataItem,"TieneHijo")
que nos indicara si la persona tiene hijos o no
Tendra hijos cuando este con check

Crear un metodo LlenarGrid , el cual contendra una coleccion de datos.
public void LlenarGrid()
{ List lista = new List();
lista.Add(new Persona("Luis","Campoverde","2156160",1));
lista.Add(new Persona("Fernando", "Salle", "2156200", 0));
lista.Add(new Persona("Santiago", "Matamoros", "2156234", 0));
lista.Add(new Persona("Daniel", "Chaqui", "2156333", 1));
gvPersona.DataSource = lista;
gvPersona.DataBind();
}
Este Metodo lo asignamos dentro de Page Load
protected void Page_Load(object sender, EventArgs e) {
//Procedemos a llamar el metodo LlenarGrid()
LlenarGrid();
}
Y se tendra este resultado.


Como ya se comento ustedes pueden poblar el gridview con cualquier control de asp.net que usted quieran, si ustedes lo deseasen podrían poblar un gridview dentro de otro gridview, pero eso seria en otro blog para mostrar el ejemplo. Gracias espero le haya servido y lo puedan generalizar a lo que ustedes requieran.

lunes, 21 de julio de 2008

Ocultando Consola en .net


Cuando iniciamos una aplicación de consola por lo general a veces queremos ir ingresando información y este programa los procesos, pero a veces la necesidad de que se cree una aplicación consola es de que ejecuta un procesos o varios procesos en particular y se fue, no necesitamos que este ventana siempre pertenezca ahí ejecutándose, por lo cual para evitar que una persona la cierra tenia algunas opciones:
1.- Crear un Hilo y si el usuario daba clik en cerrar el hilo haría el resto
(Falla por que al ser una aplicación de consola si la cierras también cierras el hilo por lo cual esta no fue una solución valida).
2.- Crear un servicio web y la aplicación de consola.
Dentro de la Aplicación de Consola hacia referencia al servicio web, dentro del servicio web estaba un hilo que ejecutaba el proceso que yo quería.
(Funciono pero una vez que se cerraba el servicio web necesitaba hacer otras cosas y como que me ataba a crear varios metodos para hacer una y otra cosa, por lo tanto no seguí en esto).
3.- (Solución al fin) La mas fácil tratar de ocultar la aplicación de consola luego de que se inicialice el proceso.
(Esta en mi caso fue la mejor porque solo aumente tres líneas de código a la aplicación de consola y el resto del procesos no le hice nada).
Bueno, aquí va la solución de ocultar una aplicación de consola.
Gracias al blog de http://emilioj.wordpress.com/2008/04/17/ocultar-la-consola-c/
Bueno aquí va el codigo:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
using System.Threading;


namespace OcultarConsola
{
class Program
{
[System.Runtime.InteropServices.DllImport("user32.dll")]
private extern static int ShowWindow(System.IntPtr hWnd, int nCmdShow);

static void Main(string[] args)
{
ShowWindow(Process.GetCurrentProcess().MainWindowHandle, 0);

//AQUÍ EL CÓDIGO
// Thread.Sleep(System.Threading.Timeout.Infinite);
escribe();


}


private static void escribe()
{

StreamWriter VLO_ArchivoLog = File.AppendText("D:\\prueba.txt");

VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().MachineName);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().MainModule.FileName);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().Modules[0].FileName);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().ProcessName);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().SessionId);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().Id);
VLO_ArchivoLog.WriteLine(Process.GetCurrentProcess().TotalProcessorTime.ToString());

for (int i = 0; i <>
Bueno adios me despido espero que les sirva.

martes, 9 de octubre de 2007

Encriptar el archivo de configuración en ASP.NET

En nuestras aplicaciones web por lo general siempre guardamos en el web.config informacion importante como son las conecciones a la base de datos, el usuario y contraseña . Esta información tenemos que encriptarla para que no quede expuesta.
El el framework 1.1 no podiamos encriptar, ahora con el framework esta tarea lo podriamos hacer con esta sentencia:

aspnet_regiis -pe "seccion que queramos" -app "/MachineRSA" digamos que queremos encriptar la seccion connectionStrings nos quedaria de la siguiente manera
aspnet_regiis -pe "connectionStrings " -app "/MyAplicacion" .
Cabe recalcar que al ejecutar esta sentencia se genera una clave en la maquina donde se encuetra la aplicación, la misma que te servira para desencriptar.

Es un articulo muy interesante que me salvo bastante, recientemente lo acabo de aplicar ya les he de comentar alguna novedad de lo que me paso.

El articulo completo esta aqui

jueves, 4 de octubre de 2007

Interoperabilidad entre .net y java

La unica forma de poder interactua estos dos lenguajes era mediante webservices pero ahora tenemos un nuevo proyecto que permitiria manejar objetos de .net en aplicaciones java.

Aqui el articulo