jueves, 3 de julio de 2008

¿Que es CSS Friendly para ASP.Net?

Bueno en este mundo de la tecnologia todo cambia y en cuanto a los programadores se refiere ya sean programadores Web o de escritorio siempre tenemos que estar actualizados. Digo si no quieren quedarse obsoletos jejeje. Bueno a lo que vine.


CSS Friendly es una herramienta o mejor dicho un tool kit para ASP.Net que nos permite modificar la manera como se muestra tus controles de servidor ASP.NET en el navegador, por ejemplo podemos hacer que un control Menu se "renderice", se muestre, con etiquetas ul, li, y no con etiquetas table, td, tr.*
Tambien se puede usar en otros controles como: DataList, GridView, Controles de Login y otros mas.

Actualmente la programacion Web se esta volviendo un poco mas exigente en cuanto a los estandares que debe cumplir una pagina para poder decir "que es una buena pagina" y la maquetacion con tablas de toda una pagina Web
es una de ellas y esto ya quedo en el olvido, aunque a veces es necesario.

En esta pagina pueden encontrar informacion sobre este control: http://www.asp.net/CssAdapters/
Y en esta un ejemplo: http://geeks.ms/blogs/sergiotarrillo/archive/2006/09/16/2793.aspx


*tomado de la pagina de
SergioTarrillo's RichWeblog

viernes, 27 de junio de 2008

Enviando email desde ASP.Net

Bueno ya tenia un rato que no ponia nada pero aki estamos de vuelta. En esta ocasion para mostrar como podemos mandar un email desde ASP.Net.
En este caso use el Visual Studio 2005 y VB como lenguaje de programacion.

Primero para que nuestro codigo funcione, debemos importar el es
Imports System.Net.Mail

Dim correo As MailMessage = New MailMessage()

'indicamos la direccion origen
correo.From = New MailAddress(Me.txtEmail.Text, "Mike", System.Text.Encoding.UTF8)
'indicamos la direccion destino
correo.To.Add("xxx.yyy@gmail.com")
'establecemos el asunto
correo.Subject = Me.txtAsunto.Text & " de " & Me.txtNombre.Text
'indicamos el tipo de codificacion
correo.SubjectEncoding = System.Text.Encoding.UTF8
'asignamos todo el contenido de lo que queremos enviar
correo.Body = Me.txtComentarios.Text
correo.BodyEncoding = System.Text.Encoding.UTF8
'indicamos si se va a habilitar la opcion de HTML o no
correo.IsBodyHtml = False


Dim smtp As New SmtpClient()
'proporcionamos nuestra credencial para poder enviar el email
smtp.Credentials = New System.Net.NetworkCredential("xxx.yyy@gmail.com", "miPassword")

smtp.Port = 587 'establecemos el puerto de envio
'indicamos el host destino, dependiendo de nuestro sistema de correos
'en este caso gmail
smtp.Host = "smtp.gmail.com"
smtp.EnableSsl = True

Try
smtp.Send(correo)
'si todo salio bien podemos mostrar un mensaje de aviso
Me.lblMsg.Visible = True
Me.lblMsg.Text = "Se envio los datos correctamente"
Catch ex As Exception
Me.lblMsg.Visible = True
Me.lblMsg.Text = ex.Message.ToString
End Try

miércoles, 5 de marzo de 2008

ACCESO A DATOS - USANDO DATASETS

Hola de nuevo. En esta ocasion veremos como obtener los datos de una Base de Datos y almacenarlos en unDataSet.
Si leyeron mi post anterior partiremos de la misma idea solo que en vez de usar DataReaders, usaremos un DataAdapter. Empezemos.

'Los namespace son los mismos

Dim cnn as SqlConnection
Dim strConexion as String
Dim strQuery as String
Dim DA as SqlDataAdapter
Dim DS as New DataSet

'estableciendo la conexión
strConexion = ”Data Source=localhost; Catalog = MiBaseDatos; Integrated Security = True”
strQuery = “SELECT * FROM Tabla”

Try
Cnn = New SqlConnection(strConexion)
'abrimos la conexión
cnn.Open()
DA = New SqlDataAdapter(strQuery, strConexion)
DA.Fill(DS, "MiTabla")
Catch(ex As Exception)
'informamos al usuario de los errores que hayan ocurrido
Finally
cnn.Close()
End Try

Como pueden ver no es mucho el codigo a comparacion de cuando usamos los DataReaders. Al usar un DataAdapter este automaticamente, carga los datos a nuestro Dataset dependiendo de nuestra consulta.
Una vez que ya tengamos los datos en el DataSet podremos manupularlos a nuestro gusto eliminando, actulizando, insertando, ordenando, etc... este es una de las ventajas de usar DataSet.
Solo falta aclarar que estos cambias se guardar en el DataSet, para guardarlos fisicamente en nuestra Base de Datos basta emplear el metodo Update.

DA.Update(DS, "MiTabla")

Con esto los cambios que haya tenido nuestra tabla se guardaran.

martes, 12 de febrero de 2008

ACCESO A DATOS - USANDO DATAREADERS Y COMMANDS

Hola en esta ocasión hablaremos un poco de cómo conectarnos a una Base de Datos usando los DataReaders. Y se preguntaran ¿Y los DataSets? Tranquilos luego hablaremos de ellos ya que es una nueva innovación que se incluyo en .Net para el manejo de Datos.
Bueno, entonces empecemos.
Primero lo que necesitamos es declarar los espacios de nombres (namespace) para el manejo de datos. Estos son:

Imports System.Data
‘namespace para trabajar con el manejador de base de datos SQL Server. Contiene clases
‘para trabajar exclusivamente con este manejador

Imports System.Data.SqlClient

Estos namespace deben ir al inicio de la clase de nuestro proyecto, aunque también se pudiera declarar dentro de nuestro código, pero en mi opinión personal suele ser algo no muy apropiado.
Una vez ya declarados los espacios de nombres ahora ya podemos acceder a nuestros datos:

‘nos permite establecer la conexión con la base de datos u origen de datos
Dim cnn as SqlConnection
Dim cmd as SQLCommand
Dim strConexion as String
Dim strQuery as String

‘estableciendo la conexión
strConexion = ”Data Source=localhost; Catalog = MiBaseDatos; Integrated Security = True”

Analicemos la cadena de conexión. Primero le indicamos en el Data Source que utilizaremos un servidor de SQL Server local. El segundo parámetro es la base de datos a utilizar. Y finalmente le indicamos que utilice las credenciales de seguridad integrada de Windows.
Si no utilizamos la seguridad integrada debemos el usuario y contraseña para acceder a la base de datos. Por lo que nuestra cadena quedaría de la siguiente manera:

strConexion = ”Data Source=localhost; Catalog = MiBaseDatos; user id =sa; password=***”

Regresando al código:

Cnn = New SqlConnection(strConexion)
‘abrimos la conexión
cnn.Open()
strQuery = “SELECT * FROM Tabla”
cmd = New SqlCommand(strQuery,cnn)

‘otra manera
‘cmd.Connection = cnn
‘cmd.CommandType = CommandType.Text
‘cmd.CommandText = “SELECT * FROM Tabla”


‘ahora obtenemos realmente los datos
Dim dr as SqlDataReader
dr = cmd.ExecuteReader
If dr.HasRows() then
Do While dr.Read()
‘obtenemos los valores
Loop
End If

‘cerramos la canexion
cnn.Close()

Veamos un ejemplo completo:

1. Agregamos un ListView y un Button en nuestro Form
2.
Cambiamos las siguientes propiedades:
View = Details
GridLines = True
FullRowSelect = True
3.
Agregamos 3 columnas: Columna1, Columna2, Columna3
4. En el evento Click del botón ponemos el siguiente código:
Dim strConexion as String = “Data Source = localhost; Catalog = MiBD; Integrated Security = True”
Dim strQuery as String = “SELECT * FROM Tabla”
Try
Dim cnn as SqlConnection = New SqlConnection(strConexion)
Dim cmd as SqlCommand = New SqlCommand(strQuery,cnn)
cnn.Open()
Dim dr as SqlDataReader = cmd.ExecuteReader
Do While dr.Read()
Dim ítem as ListViewItem
item = ListView.Items.Add(dr(“Columna1”))
item.SubItems.Add(dr(“Columna2”))
item.SubItems.Add(dr(“Columna3”))
Loop
Catch (ex as Exception)
‘informamos al usuario que ocurrió un error al acceder a la base de datos
Finally
dr.Close()
cnn.Close()
End Try

martes, 22 de enero de 2008

Conectarse a un Base de Datos mediante el Archivo de Configuracion

Como dice el titulo en este Post trataremos de obtener datos de nuestra BD mediante esta técnica.
Primero que nada para poder hacer esto en nuestro proyecto debemos tener el archivo de configuracion App.config (para los WindowsForms) o web.config (para las paginas de ASP.Net).

Si se fijan en este archivo hay una seccion que contiene la cadena de conexion a la BD y para esta cadena le corresponde un valor, es decir, de la forma clave - valor. Pero veamos un ejemplo de un archivo de configuración:

Para las aplicaciones de tipo WindowsForms:
. . .
applicationsettings
pruebavb.my.mysettings
setting name="PruebaCS" serializeAs="String">
Data Source = LOCALHOST\SQLEXPRESS; Initial Catalog = MIBASEDEDATOS; Integrated Security = True
setting
pruebaVB.My.MySettings
applicationsettings
. . .

Para los web.config (aunque también funciona para los WindowsForms):

connectionstrings
add name="conexion"
connectionString="Data Source=LOCALHOST\SQLEXPRESS;Database=MIBASEDEDATOS;Integrated Security=True;user id=sa;password="
providerName="System.Data.SqlClient"/>
connectionstrings

Una vez que tenemos esto en nuestro archivo de configuración, lo que sigue ahora es obtener esos valores de las cadenas de conexion:

VB

Dim str as String
str = Global.pruebaVB.My.MySettings.Default.PruebaCS


C#

String str;
str = global::pruebaVB.Properties.Settings.Default.PruebaCS


ASP

Dim str As String = ConfigurationManager.ConnectionStrings("cadenaDeConexion").ConnectionString

Despues de almacenar las cadenas de conexion ya lo demas es bastante facil. Nos conectamos a nuestra BD y estraemos los datos. A continuacion voy a mostrar el codigo de como hacer la conexión una vez obtenida la cadena:

Dim cnn as SqlConnection = New SqlConnection(str)
Dim cmd as SqlCommand = New SqlComand()
try
cnn.Open ()
cmd.Connection = cnn;
cmd.CommandType = CommandType.Text
cmd.CommandText = "SELECT * FROM Tabla"
. . .
Catch ex as Exception
. . .
Finally
cnn.Close()
End Try

Con este pequeño codigo ya establecemos la conexion con nuestra BD. Para extraer los datos ya lo dejo al gusto del lector extraerlos por medio de DataAdapters o DataReaders.
Y así una vez extraidos los datos estan listos para mostrarselos al usuario.

Espero este post les alla ayudado. Se aceptan comentarios.

sábado, 19 de enero de 2008

El objeto My.Application

Hola como les habia comentado en el post anterior ahora hablaremos de el objeto My.Application del espacio de nombres (namespace) My.
El My.Application es muy util para obtener información acerca de la aplicación que estamos desarrollando. Dicha información se podrían mostrar en una ventana de tipo About o Bienvenida (Splash en Visual Studio 2005).
Algunas propiedades y eventos de My.Application se habilitan solo si se marca el checkbox Enable Application Framework (habilitar marco de trabajo de la aplicación) en la solapa Application de las propiedades del proyecto.


Habilitando el Application Framework.

Ahora comentare algunas de las principales propiedades, métodos y eventos de este objeto. No mostrare todos, ya dejo al lector investigar los faltantes para un mayor conocimiento. Entro las principales propiedades, métodos y eventos estan:
  • ApplicationContext: Obtien el objeto ApplicationContext para el subproceso actual de una aplicación de Windows Forms.
  • Culture: Obtiene la referencia cultural que utiliza el subproceso actual para la manipulacion y el formato de las cadenas:
  • Info: Devuelve un objeto My.Application.Info, que proporciona las propiedades para obtener la información sobre el ensamblado de la aplicacion.
  • OpenForms: Obtiene una colección de los formulariios abiertos de toda la aplicación.
  • ... entre otros.
Ahora veremos un pequeño ejemplo donde obtendremos la informacion de la aplicación y lo mostraremos en un MessageBox.
  • Primero configuramos el Assembly Information. Para ello nos vamos a las propiedades del proyecto y en la solapa Application presionamos el boton que dice Assembly Information.
Assembly Information
  • Luego escribimos el siguiente codigo en el evento Load de nuesto Formulario:
Dim strApplication As New System.Text.StringBuilder

With My.Application.Info
'obtiene el nombre sin extension del archivo de ensamblado de la aplicacion
strApplication.AppendLine("Nombre del Ensamblado: " & .AssemblyName)
'obtiene el directorio dde esta almacenado la aplicacion
strApplication.AppendLine("Directorio: " & .DirectoryPath)
strApplication.AppendLine(New String("-", 80))
'obtiene el nombre de la compañia asociado a la aplicacion
strApplication.AppendLine("Nambre de la Compañia: " & .CompanyName)
'obtiene el copyright asociado a la aplicacion
strApplication.AppendLine("Copyright: " & .Copyright)
'obtiene la descripcion asociada a la aplicacion
strApplication.AppendLine("Descripcion: " & .Description)
'obtiene el nombre del producto asociado a la aplicacion
strApplication.AppendLine("Nombre del Producto: " & .ProductName)
'titulo asociado a la aplicacion
strApplication.AppendLine("Titulo: " & .Title)
'obtiene el aviso de marca comercial asociado a la aplicacion
strApplication.AppendLine("Trademark: " & .Trademark)
'obtiene el numero de version
strApplication.AppendLine("Version: " & .Version.ToString)
strApplication.AppendLine(New String("-", 80))
'cantidad de memoria fisica asociado al contexto del proceso
strApplication.AppendLine("Memoria: " & .WorkingSet.ToString)
End With

MessageBox.Show(strApplication.ToString())

Ahora solo nos queda ejecutar el ejemplo para poder ver la información del ensamblado.

Hasta la proxima.

viernes, 18 de enero de 2008

My Namespace

Hola de nuevo en esta ocasión voy a hablar un poco de una nueva mejora en la version 2005 de Visual Basic. El espacio de nombres (Namespace) My.
En versiones anteriores de .NET una de las tareas principales de los desarolladores era aprender las clases base del framework lo cual se podría tornar algo complejo sino se conocía los namespace donde se encontraban los objetos que se iban a neceseitar.
Para facilitar este acceso se creo el namespace My. El namespace My permite el acceso a diferentes elementos del framework por categorias de las cuales las principales son:
  1. My. Application: proporciona la informacion acerca de la aplicación que se esta ejecutando, tal como el título, el directorio de ejecucuión, la versión, variables de entorno, etc.
  2. My.Computer: proporciona información ahacerca del hardware y a la plataforma de la máquina local.
  3. My.Forms: expone una propiedad por cada formulario definido en el proyecto, proporcionando el acceso a la instancia por defecto de aquél, sin necesidad de tener que crear explicitamente un objeto de clase.
  4. My.Resources: expone los recursos de la apliación definidos en este mismo.
  5. My.Settings: expone una propiedad por cada valor de configuración definido en el proyecto.
  6. My.User: contiene información acerca del usuario actual.
  7. My.WebServices: proporciona el acceso a cada WebService referenciado en el proyecto y posibilita su utilización sin tener que crear, de manera explícita, un objeto del mismo.
Bueno, este fue una pequeña introducción general sobre este espacio de nombre. En posts posteriores explicare como funciona cada uno.

miércoles, 2 de enero de 2008

Mi primer Post

Hola a todos. Bueno les comento que casi no me gustaba mucha la idea de los blogs, pero ultimamente ya le busque sentido. En este espacio pondre varios post hacerca de la Teconologia .Net, así como ejemplos, articulos, codigos, y todo lo relacionado a esta tecnología.

Mi primera experiencia con .Net fue en VB 2003 al programar una aplicacion para una escuela de mi localidad y de ahi en adelante me llamo la atención tanto VB, C# y ASP.

Este espacio igualmente esta abierto a sugeriencias acerca de las notas que se añadan para poder mejorarlas o debatir. Es un espacio para los aficionados y los que todavia comienzan en .Net.

Saludos